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

时间:2019-03-14 07:08:56

标签: java casting primitive-types

在表达式的结果中,我得到了指数值,在其中我将long加倍。

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

有人可以解释吗?

3 个答案:

答案 0 :(得分:1)

一个数字具有相同的值,无论其表示方式如何。您看到的显示为字符串的内容只是数字的表示。

出于任何原因,JVM都决定应该以指数形式打印数字。如果要强制其以其他方式打印,则可以使用printf

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

答案 1 :(得分:0)

1.5525435144771214E9 1552543514 .... 除以1000是 1552543 ....

您是否可能误解了 1.5525435144771214E9

答案 2 :(得分:0)

符号EX的意思是“ X的幂乘以10”。

原来的号码是1552543514.4771214