全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
737 2
2021-04-21
今天遇到了个问题,在中文和unicode里面计算0.06*45都不等于2.7,但是换成6*0.45就等于2.7,或者round 0.1也等于2.7,有大佬知道为什么吗 7be327e739f9a84e827d3c51b515988.png 95c5756cd000c0d32ffaee1a516f22f.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-4-22 09:51:54
这个涉及到浮点数在计算机内的存储问题,底层的数字都是二进制的,浮点数大多数都是只能近似表达的。0.06表达精度相差略大,所以计算出来的结果并不是2.7。虽然当你不使用if的时候看不出来,但你用a去判断是否等于时是使用的实际计算的结果值。而不是我们看到的使用了format best12.后的a的值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-4-22 11:02:19
xiaobo_mx 发表于 2021-4-22 09:51
这个涉及到浮点数在计算机内的存储问题,底层的数字都是二进制的,浮点数大多数都是只能近似表达的。0.06表 ...
谢谢,查了下资料明白了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群