Java 原始变量的类型转换/缩小

Java type casting / narrowing of primitive variable

我在用 long 添加 double 的表达式结果中得到指数值。

package com.testing;

import java.util.Date;

public class TypeCasting {

    public static void main(String[] args) {
        long varA = 100000;
        long varB = 3000000;

        double logVarA = Math.log10(varA);      //  5.0
        double logVarB = Math.log10(varB);      // 6.477121254719663

        long timeStampInSec = new Date().getTime() / 1000;
        System.out.println(timeStampInSec);     // 1552543503

        double totalValue = logVarA + logVarB + timeStampInSec;
        System.out.println(totalValue);         // 1.5525435144771214E9

        double finalScoreDampingFactor = 1000;

        double finalScore = totalValue / finalScoreDampingFactor;
        System.out.println(finalScore);         // 1552543.5144771214   
    }

}

totalValue 变量中,为什么我得到 1.5525435144771214E9 值,当我将它除以 1000 时,得到 1552543.5144771214

任何人都可以解释一下吗?

1.5525435144771214E91552543514.... 除以 1000 是 1552543....

您是否可能误解了 1.5525435144771214E9

符号EX表示"times 10 to the power of X"。

原来的数字是1552543514.4771214

数字具有相同的值,无论它是如何表示的。您看到的打印为字符串的内容只是数字的表示形式。

无论出于何种原因,JVM 已决定该数字应以指数形式打印。如果你想强制它以不同的方式打印它,你可以使用 printf.

double totalValue = logVarA + logVarB + timeStampInSec;
System.out.printf("%f%n", totalValue);         // 1552547672.477121