为什么java将双精度形式转换为指数形式

为什么java将双精度形式转换为指数形式,java,spring,jsp,exponential,Java,Spring,Jsp,Exponential,我有个问题。在我的jsp页面中,我有一个接受货币值的文本字段。当我在文本字段中输入诸如66777764之类的值时,只要出现验证错误,它就会变成6.6777764E7。我知道这不会影响保存在数据库中的值,但我认为这会误导/混淆用户。请帮忙。提前谢谢。您似乎将您的号码保留为双倍,因此66777764实际上是66.777764.0,它会显示您得到的信息 您可以根据需要使用设置数字显示的格式,例如: double d = 1.234567; DecimalFormat df = new DecimalF

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

您似乎将您的号码保留为
双倍
,因此
66777764
实际上是
66.777764.0
,它会显示您得到的信息

您可以根据需要使用设置数字显示的格式,例如:

double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d)); // will print 1.23
这将显示点后有两位数字的数字(
66777764.00
),格式有许多选项,请查看文档以了解信息。

用于保留货币值

double d = 66777764d;
BigDecimal bd = new BigDecimal(d);
System.out.println(bd);
阅读以了解为什么要使用BigDecimal。

遵循


这一切都取决于您如何格式化
double
。搜索“”将获得大量信息。另外,千万不要使用双精度(
double
)或其他浮点数作为货币值。我想补充一点:千万不要使用浮点数,即Java中的双精度或浮点数来保存货币值。你会遇到麻烦的。BigDecimal答案仍然是关于货币值的好建议。
BigDecimal bd = new BigDecimal(inputVal);
System.out.println(bd);