Java 双精度显示0.20,而不是双精度显示0.2
我只有一个问题:) BigDecimal val=BigDecimal.valueOf(0.20)Java 双精度显示0.20,而不是双精度显示0.2,java,bigdecimal,Java,Bigdecimal,我只有一个问题:) BigDecimal val=BigDecimal.valueOf(0.20) 系统输出打印项次(a) 我想在val中存储一个值0.20,而不是0.2。 我能做什么?当您想要控制数字的格式时,请查看具体的子类 您可以从模式创建一个DecimalFormat,也可以直接设置它的各个方面。然后,您要求它格式化您的BigDecimal,它将为您提供字符串。当您想要控制数字的格式化方式时,请查看,尤其是具体的子类 您可以从模式创建一个DecimalFormat,也可以直接设置它的各个
系统输出打印项次(a) 我想在
val
中存储一个值0.20
,而不是0.2
。
我能做什么?当您想要控制数字的格式时,请查看具体的子类
您可以从模式创建一个
DecimalFormat
,也可以直接设置它的各个方面。然后,您要求它格式化您的BigDecimal
,它将为您提供字符串。当您想要控制数字的格式化方式时,请查看,尤其是具体的子类
您可以从模式创建一个
DecimalFormat
,也可以直接设置它的各个方面。然后,您要求它格式化您的BigDecimal
,它将为您提供字符串。您不能将0.20
而不是0.2
存储在变量中,因为它们是相同的值。但是,您可以更改打印结果的方式
你的问题让我认为你是Java编程的初学者。与其简单地回答问题,还不如仔细阅读以了解其工作原理。不能将
0.20
而不是0.2
存储在变量中,因为它们是相同的值。但是,您可以更改打印结果的方式
你的问题让我认为你是Java编程的初学者。与其简单地回答问题,还不如仔细阅读,了解它的工作原理。下面是一个小示例,说明如何使用
DecimalFormat
来满足您的需要
double d = 1.2345;
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(d)); // will print 1.23
d = 3.400;
System.out.println(df.format(d)); // will print 3.40
d = 3.456;
System.out.println(df.format(d)); // will print 3.46
BigDecimal b = new BigDecimal(0.20001);
System.out.println(df.format(b)); // will print 0.20
下面是一个小示例,说明如何使用
DecimalFormat
满足您的需要
double d = 1.2345;
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(d)); // will print 1.23
d = 3.400;
System.out.println(df.format(d)); // will print 3.40
d = 3.456;
System.out.println(df.format(d)); // will print 3.46
BigDecimal b = new BigDecimal(0.20001);
System.out.println(df.format(b)); // will print 0.20
这是因为显示,它仍然存储为0.20(可能有更多的小数)。这是因为显示,它仍然存储为0.20(可能有更多的小数)。您甚至不需要通过0.20001,0.2也会这样做。@dragon66感谢您的反馈:-)您甚至不需要通过0.20001,0.2也会这样做。@dragon66感谢您的反馈:-)