为什么java将double转换为指数形式

时间:2012-12-19 07:43:15

标签: java spring jsp exponential

我有问题。在我的jsp页面中,我有一个接受货币价值的文本字段。当我输入66777764之类的值时,只要出现验证错误,我的文本字段就会变为6.6777764E7。我知道这不会影响数据库中保存的值,但我认为它会误导/混淆用户。请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:8)

您似乎将自己的号码保留为double,因此66777764实际为66.777764.0,并显示您所拥有的号码。

您可以使用DecimalFormat格式化数字的显示,例如:

double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d)); // will print 1.23

这将在点(66777764.00)后面显示2位数字,格式有很多选项,请查看信息文档。

答案 1 :(得分:6)

关注BigDecimal

BigDecimal bd = new BigDecimal(inputVal);
System.out.println(bd);

答案 2 :(得分:5)

使用BigDecimal保留货币价值。

double d = 66777764d;
BigDecimal bd = new BigDecimal(d);
System.out.println(bd);

阅读the answer of this question以了解您应该使用BigDecimal的原因。