#java #casting #primitive-types
#java #Кастинг #примитивные типы
Вопрос:
Я получаю экспоненциальное значение в результате выражения, где я добавляю double с 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.
Может ли кто-нибудь объяснить, пожалуйста?
Комментарии:
1. Что вы ожидали от этого вывода?
Ответ №1:
Число имеет одно и то же значение, независимо от того, как оно представлено. То, что вы видите напечатанным в виде строки, является просто представлением числа.
По какой-либо причине JVM решила, что число должно быть напечатано в экспоненциальной форме. Если вы хотите заставить ее печатать по-другому, вы можете использовать printf.
double totalValue = logVarA logVarB timeStampInSec;
System.out.printf("%f%n", totalValue); // 1552547672.477121
Ответ №2:
Обозначение EX
означает «умноженное на 10 в степени X».
Итак, исходное число было 1552543514.4771214
.
Ответ №3:
1.5525435144771214E9 равно 1552543514…. деленное на 1000 равно 1552543 ….
Возможно ли, что вы неверно истолковали 1.5525435144771214E9?