Tag: 浮点

为什么从float转换为double会改变这个值?

我一直试图找出原因,但我不能。 有谁能够帮助我? 请看以下示例。 float f; f = 125.32f; System.out.println(“value of f = ” + f); double d = (double) 125.32f; System.out.println(“value of d = ” + d); 这是输出: 值f = 125.32 值d = 125.31999969482422

精度损失 – int – > float或double

我有一个我正在修改的考试题目,问题是4分。 “在java中,我们可以将int赋给double或float”。 这会丢失信息吗?为什么? 我已经说过,因为int通常具有固定的长度或大小 – 存储数据的精度是有限的,其中以浮点存储信息可能是无限的,基本上我们丢失信息因为这个 现在我有点粗略地说我是否在这里击中了正确的区域。 我确信它会失去精确度,但我无法完全理解为什么。 我能得到一些帮助吗?

为什么(360/24)/ 60 = 0 …在Java中

我正在尝试计算(360/24)/ 60当我得到0.25时,我一直得到答案0.0 用文字:我想将360除以24,然后将结果除以60 public class Divide { public static void main(String[] args){ float div = ((360 / 24) / 60); System.out.println(div); } } 打印出: 0.0 这是为什么? 我做的事情真是愚蠢,还是有充分的理由

产生奇数结果的双重计算

我有2个数字存储为Double,1.4300和1.4350。 当我减去1.4350 – 1.4300时,它给出了结果:0.0050000000000001155。 为什么它会在最后添加1155,如何解决这个问题,使其返回0.005或0.0050? 我不确定舍入是否有效,因为我使用的是2和4的十进制数。

Java中的浮点数的精度错误

我想知道在Java中修复精度错误的最佳方法是什么。 正如您在以下示例中所看到的,存在精度错误: class FloatTest { public static void main(String[] args) { Float number1 = 1.89f; for(int i = 11; i < 800; i*=2) { System.out.println("loop value: " + i); System.out.println(i*number1); System.out.println(""); } } } 显示的结果是: 循环值:11 20.789999 循环值:22 41.579998 循环值:44 83.159996 循环值:88 166.31999 循环值:176 332.63998 循环值:352 665.27997 循环值:704 1330.5599 此外,如果有人可以解释为什么它只从11开始并且每次都加倍。 我认为所有其他值(或至少其中许多值)显示正确的结果。 这样的问题让我头疼,我通常使用数字格式化程序或将它们放入String中。 编辑:正如人们提到的,我可以使用一个双,但在尝试之后,似乎1.89作为双倍时间792仍然输出错误(输出为1496.8799999999999)。 我想我会尝试其他解决方案,比如BigDecimal

在java中操作和比较浮点数

在Java中,没有精确表示浮点运算。 例如这个java代码: float a = 1.2; float b= 3.0; float c = a * b; if(c == 3.6){ System.out.println(“c is 3.6”); } else { System.out.println(“c is not 3.6”); } 打印“c不是3.6”。 我对超过3位小数的精度感兴趣(#。###)。 我如何处理这个问题来乘以浮点数并可靠地比较它们?