float转double问题

三页菌 2018-07-27 08:53:46
c# 小数 float类型转double类型 ,转了后精度丢失,有没有比较好的办法呢
...全文
993 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzhfirst1 2018-08-09
  • 打赏
  • 举报
回复
大部分小数在计算机上是无法精确表示的
liulilittle 2018-08-07
  • 打赏
  • 举报
回复
这个问题很好处理呀,float To double 之间相对安全的转换不是通过“隐式或强制转换”而是先把“float”的值转换成其
IEEE 754标准的“字符串形式”
同时 double 在利用“float 值的字符串形式“转换成目标的”double“类型,这样精度丢失会比较少,但要是指望不丢失
精度是现实的,但这主要受限于”float“转换成字符串形式,与实际的”float“的值不同的情况(不要怀疑这种问题是存在的)
但这不是说”上面提到安全转换成double“的方法是错误的,恰恰它是当下 能够尽量不丢失精度的几种办法之一。

double d = double.Parse("1.4545645")
晨易夕 2018-08-01
  • 打赏
  • 举报
回复
引用 13 楼 m0_37796494 的回复:
[quote=引用 11 楼 sp1234 的回复:]
所谓“转了后精度丢失”,估计你也就是 #9 楼说的那个概念,是打印为字符串的时候又要仅仅打印有限个数字?!!

我只是问个问题,提出我的疑惑,你在这里咬文嚼字有意思吗?对于解决我的疑惑毫无帮助。我不知道你这样回复干嘛?来这里训话吗?[/quote]
萌新~
晨易夕 2018-07-30
  • 打赏
  • 举报
回复
不应该说精度丢失,应该说精度“伪完善”。
三页菌 2018-07-30
  • 打赏
  • 举报
回复
引用 11 楼 sp1234 的回复:
所谓“转了后精度丢失”,估计你也就是 #9 楼说的那个概念,是打印为字符串的时候又要仅仅打印有限个数字?!!

我只是问个问题,提出我的疑惑,你在这里咬文嚼字有意思吗?对于解决我的疑惑毫无帮助。我不知道你这样回复干嘛?来这里训话吗?
  • 打赏
  • 举报
回复
所谓“转了后精度丢失”,估计你也就是 #9 楼说的那个概念,是打印为字符串的时候又要仅仅打印有限个数字?!!
  • 打赏
  • 举报
回复
1.45456445217133 如果转为 float 就是 1.4545645f,没有什么不一样。因为(规定字节)“二进制表示是一样的”。

只怪你不懂计算机二进制数字原理。
XiaoYi96 2018-07-29
  • 打赏
  • 举报
回复
保留7位小数
键盘敲出字 2018-07-28
  • 打赏
  • 举报
回复
单精度转双精度会丢失??请举例说明一下
  • 打赏
  • 举报
回复
float 有效的位数本来就比 double 少很多,哪来的“丢失”?
xuzuning 2018-07-28
  • 打赏
  • 举报
回复
那你怎么不说 Debug.Log(b); 是 1.454564 呢?

fload 是4个字节,double 是8个字节
在有限的空间里是不能表示出无限的数据的
所以浮点数表示的都是近似值,只有有效数的概念,而无精度的概念
而有效数字的运算结果的有效数字不会超过参与运算的最小有效数字, 参考 https://baike.baidu.com/item/%E6%9C%89%E6%95%88%E6%95%B0%E5%AD%97/406066?fr=aladdin
三页菌 2018-07-28
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
float 有效的位数本来就比 double 少很多,哪来的“丢失”?
看下面代码
三页菌 2018-07-28
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
浮点数没有精度可言
float小数转double 比如 1.4545645 最后转后输出的是 1.45456445217133 ,有没有解决的办法
三页菌 2018-07-28
  • 打赏
  • 举报
回复
忘记贴代码了,我还以为大家都知道
具体说是给我补了几位
【c#】
float a = 1.4545645f;
double b = a;
double c = System.Convert.ToDouble(a);
Debug.Log(b);
Debug.Log(c);

最后输出 b为 1.45456445217133 c为1.45456445217133
数据和之前不一样了
xuzuning 2018-07-27
  • 打赏
  • 举报
回复
浮点数没有精度可言

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧