关于float、double小项问题

问题表述

对于(int)90*0.7,在float下会算出63,而在double下则会取得62。

根本原因

double和float的精度不同,因而对于数字的保存不同,例如0.7在double下会有一个小项,导致存储是是63-(一个很小的数),所以在取int时(舍弃低位),就会变成62。

有些时候float会有小项而double没有。

这时候怎么处理呢?

twh大佬告诉我,要先进行四舍五入,再保留n位小数。

具体操作

可以加上一个0.00……005,中间0的个数等于要保留的位数+1。

例如要保留2位小数,就加上0.0005。

但这样会出现0.6145保留两位小数:

  • 正确的是0.61
  • 加上0.0005就成了0.62了

所以又请教了一下twh大佬。(还没回我,后面会更新的)

posted @ 2020-10-25 20:59  尹昱钦  阅读(107)  评论(0编辑  收藏  举报