簡體   English   中英

Java類型轉換/縮小原始變量

[英]Java type casting / narrowing of primitive variable

我在表達式的結果中得到指數值,在其中我將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

可以請任何人解釋嗎?

無論數字如何表示,數字都具有相同的值。 您看到的顯示為字符串的內容只是數字的表示。

不論出於何種原因,JVM都決定以指數形式打印數字。 如果要強制以其他方式打印它,可以使用printf

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

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

您是否可能誤解了1.5525435144771214E9

EX含義是“ X的10倍”。

因此原始號碼為1552543514.4771214

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM