我正在尝试格式化一个数字。可以是2到6的十进制。
如果我传递一个没有小数的数字,结果是ok的。否则,它会添加随机小数。
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);
如:Value = 35 -> 35
value = 35.6 -> 35.65932558(预期值35.60)
value = 35.659 -> 35.68899918(预期值35.659)
我读到这可能是一个问题与浮动变量。我已经试过了,但结果是一样的。
我该如何解决这个问题?
谢谢
我写了这个快速测试程序,它似乎通过了你所有的测试用例:
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
。请让我知道,如果你看到相同的结果与你上面发布的代码。