我正在尝试格式化数字。它可以有2到6的十进制数。
如果我传递一个没有小数的数字,结果就可以了。 否则它会添加随机小数。
float value = ...;
DecimalFormat formatter_currency = new DecimalFormat();
DecimalFormatSymbols nf = new DecimalFormatSymbols();
nf.setDecimalSeparator('.');
nf.setGroupingSeparator(',');
formatter_currency.setDecimalFormatSymbols(nf);
formatter_currency.setMaximumFractionDigits(8);
formatter_currency.setMinimumFractionDigits(2);
return formatter_currency.format(value);
例如: 值= 35 - > 35.00
值= 35.6 - > 35.65932558(预计35.60)
值= 35.659 - > 35.68899918(预计35.659)
我读过浮点变量可能存在问题。 我尝试过双倍,但结果是一样的。
我该如何解决这个问题?
由于
答案 0 :(得分:0)
我写了这个快速测试程序,似乎通过了所有的测试用例:
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class FormatTest {
public static void main(String[] args) {
double value = 35.659;
DecimalFormat formatter_currency = new DecimalFormat();
DecimalFormatSymbols nf = new DecimalFormatSymbols();
nf.setDecimalSeparator('.');
nf.setGroupingSeparator(',');
formatter_currency.setDecimalFormatSymbols(nf);
formatter_currency.setMaximumFractionDigits(8);
formatter_currency.setMinimumFractionDigits(2);
System.out.println(formatter_currency.format(value));
}
}
请尝试在您的计算机上进行编译并尝试输入不同的值。我基本上只是用double
而不是float
来尝试。如果您看到与上面发布的代码相同的结果,请与我们联系。