当前位置:  开发笔记 > 编程语言 > 正文

将字符串转换为float而不会丢失精度

如何解决《将字符串转换为float而不会丢失精度》经验,为你挑选了1个好方法。

var_dump((float)'79.10')返回我79.09999999999999.我已经尝试了一百万种方法尝试将这个值作为浮点数(number_format,round)舍入到原始的79.10 ,我找不到办法来做到这一点.

有什么办法可以float从原始字符串中获得79.10 的值吗?



1> paxdiablo..:

不,因为0.1(并且,通过扩展79.1)实际上不能表示为float(假设IEEE-754单精度或双精度编码).0.1在该编码中有一个无限重复的小数部分:

1001 1001 1001 1001 ...

您要么必须将其保留为字符串,要么接受编码方案没有无限精度并解决它的事实.

后者的一个示例是仅将数字输出到某个精度,例如两个十进制数字,并确保(in-)相等比较使用绝对或相对增量来比较数字.

当你添加数字时,需要相当多的操作才能使不精确效果在百分之一级别变得可见.乘法时速度更快但仍需要一段时间.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有