问个类型转化的问题,float类型转int,觉得可能会出问题,但结果并没有?

譬如把float类型的2.0000000000转化为int,底层存储的应该是1.999999999999999这样的吧,有精度限制的,所以当我把这个数转int的时候,觉得会变成1(丢弃小数部分了)
但测试了几个语言,都还是正确的(php,java,go,js)
php:
clipboard.png
js:

clipboard.png

go:

clipboard.png

java:

clipboard.png

阅读 6.6k
9 个回答

2.0是可以被浮点数精确表达的 这个数不应该出问题

建议看看浮点数标准IEEE 754的标准。实际上,整数是可以用浮点格式精确保存的,因此不会出现这种问题

小数的存储用科学记数法存储,并不是1.999999...,在强转的过程中是做处理的,不是直接转换个类型

一般来说都是低精度转高精度,比如int->float,高精度转低精度,是要丢失精度,数据结果可能会变得很诧异的。

几个经典的例子

(int)(0.57 * 100)

(int)((0.1+0.7)*10)

楼主用的什么工具

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题