Java中的字符串巨大的十进制数
问题是,该数字太大,不适合double,它会提供以下输出:Java中的字符串巨大的十进制数,java,double,Java,Double,问题是,该数字太大,不适合double,它会提供以下输出: double a=816992306.6297043221; System.out.println("a="+a); 当我减少数字时,结果会正确显示。 这个问题的有效解决方案是什么?您可以使用数字,而不是双精度的: 不可变,任意精度有符号十进制数 BigDecimal可以用所选精度表示任何数字 Double对最大值和最小值有限制,对精度有限制您可以使用数字代替Double: 不可变,任意精度有符号十进制数 BigDecimal可以用所
double a=816992306.6297043221;
System.out.println("a="+a);
当我减少数字时,结果会正确显示。
这个问题的有效解决方案是什么?您可以使用数字,而不是双精度的:
不可变,任意精度有符号十进制数
BigDecimal
可以用所选精度表示任何数字
Double
对最大值和最小值有限制,对精度有限制您可以使用数字代替Double
:
不可变,任意精度有符号十进制数
BigDecimal
可以用所选精度表示任何数字
Double
对最大值和最小值有限制,对精度有限制,我认为这是一个精度问题
您可以查看此链接以了解格式
您可以使用DecimalFormat类
a=8.169923062970433E7
如果要在运行时设置精度
double d1 = 3.14159;
double d2 = 1.235;
DecimalFormat format = new DecimalFormat("#.##");
double roundedD1 = format.format(d1); // 3.14
double roundedD2 = format.format(d2); // 1.24
我认为这是一个精度问题
您可以查看此链接以了解格式
您可以使用DecimalFormat类
a=8.169923062970433E7
如果要在运行时设置精度
double d1 = 3.14159;
double d2 = 1.235;
DecimalFormat format = new DecimalFormat("#.##");
double roundedD1 = format.format(d1); // 3.14
double roundedD2 = format.format(d2); // 1.24
这个数字对double来说不是太大。它只是用科学符号表示的。这并没有什么错,这是故意的行为。大卫·洛伦佐·马里诺的答案可能是重复的。尽管你在小数点后3位上失去了精度,但这确实是正确的。这个数字对于双精度来说并不是太大。它只是用科学符号表示的。这并没有什么错,这是故意的行为。大卫·洛伦佐·马里诺的答案可能是重复的。记住,这确实是正确的,尽管你在小数点后3位失去了精确度。