BigDecimal是一个java.math包中的类,它具有处理大量特定规模的许多好处.c#中是否存在具有此功能的等效类或数据类型.
我正在将.NET代码转换为Java并遇到精度不匹配的问题.
.NET代码:
private decimal roundToPrecision(decimal number, decimal roundPrecision)
{
if (roundPrecision == 0)
return number;
decimal numberDecimalMultiplier = Math.Round(number / roundPrecision, MidpointRounding.AwayFromZero);
return numberDecimalMultiplier * roundPrecision;
}
Run Code Online (Sandbox Code Playgroud)
roundToPrecision(8.7250, 0.05);上面代码中的调用函数给出了我8.75期望的函数.
将函数转换/转换为Java如下.我找不到确切的
Math.Round选择.
Java代码:
public double roundToPrecision(double number, double roundPrecision) {
if (roundPrecision == 0)
return number;
int len = Double.toString(roundPrecision).split("\\.")[1].length();
double divisor = 0d;
switch (len) {
case 1:
divisor = 10d;
break;
case 2:
divisor = 100d;
break;
case 3:
divisor = 1000d;
break;
case 4: …Run Code Online (Sandbox Code Playgroud)