这是我的代码
import java.text.DecimalFormat;
import java.text.ParseException;
public class TestJava {
public static void main(String[] args) throws ParseException {
DecimalFormat df = new DecimalFormat("#.00");
String value = df.format(250.0);
System.out.println(Double.parseDouble(value));
}
}
输出:250.0
我需要它250.00 [不需要字符串..双模式的答案]
请帮我解决这个问题
谢谢
答案 0 :(得分:2)
您将实数的常规十进制表示(如您在小学教过的)与计算机浮点类型(例如double
)的表示混淆。它们是不同的,它们的工作方式不同。
在后一种情况下,250.0只有一个表示为double
。这是二进制版本向我们显示的精确数字:
01000000 01101111 01000000 00000000
00000000 00000000 00000000 00000000
将字符串"250.0"
和"250.00"
转换为double
时,您将获得完全相同的值。
从数学的角度来看,你似乎尝试来模拟数字的精确度;即,您希望"250.0"
表示249.5000 ...至250.49999 ...,"250.00"
表示249.95000 ...至250.049999 ....
您可以使用double
对测量(或其他)的精度进行建模,但您需要使用一对数字来完成。
答案 1 :(得分:0)
类型double
只保存数值 - 它不包含有关数字格式的任何信息。价值" 250"与值" 250.0"相同或" 250.00" - 您无法在double
变量中存储格式信息,例如小数点后应打印多少个零。
如果您需要保存此信息,则需要将值保留为字符串,或者找到不同的解决方案。
答案 2 :(得分:0)
试试这个
public static void main(String[] args) {
Double i = 250.0;
System.out.format("Result is %.2f", i);
}
输出
250.00
答案 3 :(得分:0)
public static void main(String[] args) {
Double i = 250.0;
System.out.format("Result is %.2f", i);
}
上述方法不起作用; System.out.format()接受一个String和一个Object []而不是String,Double。