gpt4 book ai didi

java - float 比较

转载 作者:行者123 更新时间:2023-11-30 21:37:32 25 4
gpt4 key购买 nike

C语言

float a=0.1;

if(a==.1)
printf("hello");
else
printf("123");

输出为123

但对于 Java

float a=0.1F;

if(a==.1)
System.out.println("hello");
else
System.out.println("123");

答案是 hello .

为什么?

最佳答案

此处通过 == 进行比较,首先将 float 转换为 double,然后比较这两个值。

float real = 0.1f;
double real2 = real;
System.out.println(real2);

输出

0.10000000149011612

现在您可以看到,当您将 float 转换为 double0.1 时,您将无法在此处获得确切的值。这里系统会将您的float值转换为double,并具有额外数据精度。

当您编写 if(a==.1) 时,这里会发生同样的事情,您的 a 将被转换为类似 0.10000000149011612 的内容,并且比与 0.1 进行比较,它已经是 double 并且具有精确值 0.1,因此结果为 false 并且必须打印 123 而不是我确定的 hello

关于java - float 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com