关于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大佬。(还没回我,后面会更新的)