将浮点值分配给 JAVA 中的双精度值时出现奇怪的输出。得到奇怪的小数

Strange output when float value is assigned to a double in JAVA. Getting weird decimals

我在理解浮点数和双精度数的类型转换时遇到问题

float a = 9.8f; 
double b = g; 
double c = 9.8; 
System.out.println(b); 
System.out.println(c);

输出-

9.800000190734863 
9.8

为什么在 b 的情况下会出现额外的东西?多余的小数从何而来?

您正在通过隐式数据类型转换从较小的数据类型移动到较大的数据类型,而这只是 JVM 试图提供一个四舍五入到它可以从这个浮点数表示的最接近的值。我会看看 Chapter 2. The Structure of the Java Virtual Machine on Oracle's website。我认为 OH GOD SPIDERS 得到的,对于你在这里的例子,是使用像 BigDecimal.valueOf((long)(a*100),2).doubleValue().

这样的东西