当前位置: 首页 > news >正文

冒险岛2做乐谱网站惠州网站建设公司推荐乐云seo

冒险岛2做乐谱网站,惠州网站建设公司推荐乐云seo,电子商务网站建设需要做好哪些准备6,2345浏览器下载项目需求 存储定位数据#xff0c;需要保存到小数点后10位数据。 需求分析 项目需求看起来很简单#xff0c;其实实现起来也不难#xff0c;我们直接使用SharedPreferences 存储一下就好了#xff0c;反正也没其他要求。 好了#xff0c;直接使用SharedPreferences 存…项目需求 存储定位数据需要保存到小数点后10位数据。 需求分析 项目需求看起来很简单其实实现起来也不难我们直接使用SharedPreferences 存储一下就好了反正也没其他要求。 好了直接使用SharedPreferences 存储一下double数据就行了 但是SharedPreferences 不能存储double数据 。。。。。。 是的SharedPreferences 就是不能存储double类型的数据虽然double类型的数据也是基本类型数据。。。 SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中这些数据具有一定的类型限制。具体来说SharedPreferences能够直接存储的数据类型包括 String字符串类型用于存储文本信息。int整型用于存储整数数据。float浮点型用于存储小数数据。long长整型用于存储比int类型范围更大的整数数据。boolean布尔型用于存储真或假两种状态。StringSet字符串集合类型用于存储一组字符串。 那我们的需求是要保存的数据有10位小数的但是使用float存储的话这个精度也打不到我们的需求float 类型大约能精确表示 6-9 位有效数字其中小数部分通常不超过 7 位而 double 类型大约能精确表示 15-17 位有效数字其中小数部分通常不超过 15 位。 所以我们要是满足需求的话是要使用double的那怎么解决这个问题呢。 解决方法 解决方法一 将 double 转换为 String // 存储 double SharedPreferences sharedPreferences context.getSharedPreferences(myPrefs, Context.MODE_PRIVATE); SharedPreferences.Editor editor sharedPreferences.edit(); double myDouble 12.34; editor.putString(myDoubleKey, String.valueOf(myDouble)); editor.apply();使用的时候将一个 String 类型的带小数的数据转换为 double 类型并保留10位小数。在这个过程中可以使用 BigDecimal 来处理精度问题。 public static double convertStringToDouble(String str) {try {// 将字符串转换为 BigDecimalBigDecimal bigDecimal new BigDecimal(str);// 设置精度并进行舍入bigDecimal bigDecimal.setScale(10, RoundingMode.HALF_UP);// 转换为 doublereturn bigDecimal.doubleValue();} catch (NumberFormatException e) {// 处理转换异常System.err.println(Invalid number format: str);return 0.0; // 或者根据需要返回其他值}}解决方法二 将 double 值转换为 long 这看上去第一眼就懵逼了不是这个long能存小数吗那肯定不能啊。 long 类型本身是整数不能直接存储小数。但是使用 long 来存储 double 值的关键在于如何处理它们的二进制表示。 首先我们要知道 double 在内存中以 IEEE 754 格式表示它包含了符号位、指数部分和尾数部分。 这个表示可以被转换为一个 64 位的整数long通过 Double.doubleToRawLongBits() 方法。 调用 Double.doubleToRawLongBits(value) 时实际上是将 double 的内存表示即二进制数转换为一个 long 类型的数字。这并不是说 long 存储了小数而是 long 存储了 double 的二进制表示。 这个 long 数字可以被完整地还原为原始的 double 值。 浮点数的内存表示 double 类型在 Java 中使用 IEEE 754 标准进行表示。它包含 1 位符号位表示正数或负数。11 位指数用来表示数值的范围。52 位尾数也称为有效数字用于表示具体的数值。 这样double 值的存储是通过这些位来表示其具体的数值特性。整个 double 在内存中占用 64 位即 8 字节。 使用 long 存储 double 由于 double 是 64 位的而 long 也是 64 位的可以利用这种大小的相同来存储 double 的原始位表示。具体流程如下 存储过程 转换 当调用 Double.doubleToRawLongBits(value) 时Java 将 double 值的 64 位二进制表示转换为一个 long 类型的数字。 这个 long 数字实际上是 double 值在内存中的“快照”保留了所有的位信息。 存储 将得到的 long 数字存储到 SharedPreferences 中。 读取过程 获取 long 值 从 SharedPreferences 中读取之前存储的 long 值。 还原 使用 Double.longBitsToDouble(longBits) 方法将这个 long 值转换回原来的 double 值。 在这个过程中Java 会重新解析这个 long 的位信息将它解读为 double 的各个部分符号位、指数、尾数并计算出原始的浮点数值。 所以假设我们有一个double数据3.14使用SharedPreferences 存储这个数据时我们要 转换 double 为 long 调用 Double.doubleToRawLongBits(value) 时Java 会将 double 值的 64 位二进制表示转换为一个 long 类型的数字。这一过程包括以下几个步骤 内部表示 首先Java 使用 IEEE 754 标准来表示 double 值。这个表示方式将 double 的数值分解为三部分 符号位1 位决定数值是正是负。指数部分11 位用于表示数值的范围和大小。尾数有效数字52 位表示实际的数值。 生成长整型 Double.doubleToRawLongBits(value) 方法会将这些位拼接成一个 64 位的整数long这个整数就是 double 在内存中的原始二进制表示。 例如对于 3.14这个转换会生成一个特定的 long 值表示 3.14 在 IEEE 754 中的位模式。 存储 long 到 SharedPreferences 得到了这个 long 值就可以将其存储在 SharedPreferences 中 long bits Double.doubleToRawLongBits(value); sharedPreferences.edit().putLong(key, bits).apply(); 获取 long 值 需要读取存储的 double 值时首先从 SharedPreferences 中获取之前存储的 long 值 long bits sharedPreferences.getLong(key, 0); 还原 long 为 double 将这个 long 值转换回原始的 double 值使用 Double.longBitsToDouble(longBits) 方法 double value Double.longBitsToDouble(bits); 解析过程 在这一过程中Java 会根据 long 中的位信息重新构造出 double 的三个组成部分 符号位如果符号位为 0则表示正数如果为 1则表示负数。指数部分根据存储的位值Java 会计算出实际的指数。尾数有效数字也会根据存储的位值重新构造出来。 这个过程会将 long 的二进制位解析成 double 需要的各个部分然后合成最终的浮点数值。 通过以上的步骤Java 能够有效地将 double 类型的数值以其原始二进制格式存储为 long 类型从而在 SharedPreferences 中安全地保存和读取。这个方法不仅确保了数据的准确性还利用了 long 和 double 相同的存储大小64 位使得转换过程既高效又简便。
http://www.eeditor.cn/news/120116/

相关文章:

  • 网站开发和软件开发房屋平面图设计软件免费
  • 怎么增加网站浏览量北京seo顾问服务公司
  • 深圳做分销商城网站嘉兴做微网站
  • 怎么建卡盟网站wordpress上传至哪个目录下
  • 群推广网站淘宝网络营销方式
  • 学习网站的设置和网页的发布深圳科技公司排名10
  • 网站在当地做宣传wordpress博客修改
  • 北京网站开发学习机关门户网站 建设 方案
  • 建设银行官网的网站首页东莞网站制作公司联系方式
  • 求个没封的w站2021不用下载wordpress导航菜单
  • 石家庄企业商城版网站建设wordpress攻略
  • 江苏天宇建设集团有限公司网站小程序开发工具编辑器
  • 旅游网站开发项目介绍wordpress 登录重定向
  • 网站建设 唐山seo营销外包公司
  • 合肥seo网站排名网站建设工作有底薪吗
  • 做网页推广有哪些公司北京seo诊断
  • 网站管理公司搜索引擎免费登录入口
  • wordpress下载站用什么模板动漫制作必须会画画吗
  • 河南郑州广告公司网站建设东莞地图全图
  • 网站建设期中考试题设计外贸网站建设
  • 网站开发投标书范本目录织梦网站地图怎么做
  • asp.net个人网站空间wordpress 知言主题
  • 专业手机网站开发瑞金建设局网站
  • 玉林专业网站建设100种找客户的方法
  • 网站开发好还要空间吗html网页制作用什么语言
  • 英语网站的建设需要企业推广平台
  • 上海市网站设计公司网站如何进行品牌建设
  • 企业网站建设费用怎么记账淄博周村网站建设方案
  • 网站制作图书php管理系统
  • 网站开发人员工工资重庆中环建设有限公司网站