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.5525435144771214E9
是 1552543514.... 除以 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
我在用 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.5525435144771214E9 是 1552543514.... 除以 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