java - 如何从大 double 中删除小数位并让它们打印为数字而不是 2.13837537957E14?

标签 java rounding

我正在尝试对一个大的 double (大于整数允许的值)进行舍入,以便它将在没有小数位的情况下打印到 E13 次幂,但我不知道如何进行。

我研究了 DecimalFormat 以及强制转换和字符串方法来修复它,但对于大于 int 的数字没有答案。

import java.util.*;
import java.text.*;
class Different { 
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("#,#########");
        Scanner in = new Scanner(System.in); 
            while(in.hasNext()) {
            double a = in.nextDouble();
            double b = in.nextDouble(); 

            double answer = (Math.abs(a - b));
            df.format(answer);
            System.out.println(answer);
            }
            in.close(); 
        }
    } 

我想要打印

2 71293781685339 12345677654320

但是得到

2.0 7.1293781685339E13 1.234567765432E13

最佳答案

检查 Java API 中的 System.out.printf()。具体描述在 PrintStream 类

      double val = 123.4567765432092;
      System.out.printf("%3.14f%n", val);

请记住, double 值只有 53 位精度,包括整数部分和尾数。这相当于大约 16 位数字。除此之外,您将需要使用 BigDecimal

关于java - 如何从大 double 中删除小数位并让它们打印为数字而不是 2.13837537957E14?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138420/

相关文章:

c# - Linq 数据类型与 Double 的比较

python - python中的 float 精度

Python 3.0+ 设置为最多 4 位小数和四舍五入

javascript - 任何人都可以详细说明 JavaScript 中的数字精度和溢出吗?

java - 如何从连续运行的随机整数生成器中(有效地)找到整数簇的数量?

jframe的java缩放

java - 防止上下文 XML 在 Tomcat 6 中被覆盖

java - 将项目添加到 JList

java - 高阶乘泊松计算

sql - SQLite 中的 CEIL 和 FLOOR