Jor*_*ren 14
您可以通过乘以数字将其作为第一个小数位来舍入到小数点后五位.然后进行正常舍入,再次将其作为小数点后第五位.
假设圆的值是一个double名为x:
double factor = 1e5; // = 1 * 10^5 = 100000.
double result = Math.round(x * factor) / factor;
Run Code Online (Sandbox Code Playgroud)
如果你想四舍五入到小数点后6位,让factor会1e6,等等.
Jon*_*eet 10
无论你做什么,如果你得到一个double值,它不可能正好是 5位小数.这不是二进制浮点运算的工作方式.你要做的最好的是" 最接近原始值的双精度值四舍五入到小数点后5位".如果要打印出该double 的确切值,它仍可能有超过5个小数位.
如果你真的想要精确的十进制值,你应该使用BigDecimal.
乘以100000.加0.5.截断为整数.然后除以100000.
码:
double original = 17.77777777;
int factor = 100000;
int scaled_and_rounded = (int)(original * factor + 0.5);
double rounded = (double)scaled_and_rounded / factor;
Run Code Online (Sandbox Code Playgroud)