Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双精度显示0.20,而不是双精度显示0.2_Java_Bigdecimal - Fatal编程技术网

Java 双精度显示0.20,而不是双精度显示0.2

Java 双精度显示0.20,而不是双精度显示0.2,java,bigdecimal,Java,Bigdecimal,我只有一个问题:) BigDecimal val=BigDecimal.valueOf(0.20) 系统输出打印项次(a) 我想在val中存储一个值0.20,而不是0.2。 我能做什么?当您想要控制数字的格式时,请查看具体的子类 您可以从模式创建一个DecimalFormat,也可以直接设置它的各个方面。然后,您要求它格式化您的BigDecimal,它将为您提供字符串。当您想要控制数字的格式化方式时,请查看,尤其是具体的子类 您可以从模式创建一个DecimalFormat,也可以直接设置它的各个

我只有一个问题:)

BigDecimal val=BigDecimal.valueOf(0.20)
系统输出打印项次(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感谢您的反馈:-)