问题描述
|
我正在阅读如何将十进制值四舍五入到最接近的0.05值?
它提到以下内容。
Math.ceiling(myValue * 20) / 20
这个骇客如何运作?我的意思是我们是如何得出这个解决方案的?
解决方法
没有四舍五入到0.05的库函数,但是有一个舍入到1.00的函数:上限。这几乎与粘贴的公式相同(嗯,双精度不是绝对精确)(20 * 0.05 = 1)
您是否尝试用某种东西代替您的配方,然后看看会发生什么?
1.03 * 20 = 20.60
ceil(20.6) = 21
21/20 = 1.05
, 1/20是0.05
1/100是0.01
如果要舍入到0.01,则要乘以100,再舍入并除以100。同样,要舍入到0.05,也要进行同样的操作,但是要舍入为20。
, 它将在Math.ceiling函数内部将0.05映射到1(通过乘法),然后将结果映射回0.05(通过除法)