例如,假设我有一个方法
double roundDown(double unrounded, double precision) {
}
roundDown(137.42973, 0.01) would return 137.42
roundDown(137.42973, 0.05) would return 137.4
roundDown(137.42973, 0.25) would return 137.25
Run Code Online (Sandbox Code Playgroud)
有没有库可以做这样的事情,否则算法相当简单?
将原始数字除以精度,向下舍入到最接近的整数,然后再次乘以精度:
double roundDown(double unrounded, double precision) {
return precision * Math.floor(unrounded / precision);
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是固有的浮点不精确意味着你的号码可能不准确,你正在寻找的答案-例如,你可能会得到137.399999而不是137.4