[英]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.5525435144771214E9是1552543514 ....除以1000是1552543 ....
您是否可能误解了1.5525435144771214E9 ?
EX
含义是“ X的10倍”。
因此原始号码为1552543514.4771214
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.