繁体   English   中英

Java中的浮点数

Float numbers in Java

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

任何人都可以请我为什么以下程序的输出不是“不同的”?

public static void main(String[] args)
{

float f1=3.2f;
float f2=6.5f;

if(f1==3.2)
System.out.println("same");
else
System.out.println("different");

if(f2==6.5)
System.out.println("same");
else
System.out.println("different");
}

o / p:不同的

6 个回复

6.5具有有限二进制表示:110.1

具有至少4个有效位的任何浮动类型都可以完美地表示该数字。

110.100000000000000000000(浮动)
= 6.5

110.10000000000000000000000000000000000000000000000000(双)
= 6.5

3.2另一方面有无限二进制表示:101.0011001100110011 ...

float和double没有无限精度因此只能近似这个数字:(

101.001100110011001100110(浮动)
= 3.2000000476837158203125

101.00110011001100110011001100110011001100110011001101(双)
= 3.20000000000000017763568394002504646778106689453125

你可以清楚地看到,这些数字是不一样的!

因为3.2不能完全表示为浮点数而6.5是(提示:6.5 = 13 * 2 ^( - 1)),以及3.2是double字面但3.2f是float字面的事实。

因为3.2f是float值而3.2double float值。 浮点数总是略微不准确,因为二进制表示不能准确地实现它们,因此将它们进行精确相等比较是一个坏主意。 特别是比较浮动与双打。 3.2f == 3.2f这样的表达式通常是可以的,但即使是某些语言中的表达也会失败,例如,如果它们在寄存器中比在内存中更准确地表示数字。

有助于理解

“3.2f”是float类型。 “3.2”是double类型。

另外,我认为任何带小数的内容都默认为double,所以当你进行比较时,你必须添加'f',如if(f2==6.4f)

1 Java中的浮点数

可能重复: 为什么在Java中(360/24)/ 60 = 0… Java中的float和longs有问题 目前,我正在尝试对对象及其属性进行类似的操作,但是即使以这种最简单的形式,我的程序也会返回0.0。 我已经尝试过用Longs进行测试,但结果仍然相同。 这是 ...

2 比较Java中的浮点数[重复]

可能重复: 在java中操作和比较浮点 我是否应该在比较Java中的浮点数时使用Epsilon? Float.compare(float f1,float f2)静态方法是否可以安全使用? 谢谢 ! 编辑:我想我明白了。 当我写,比如说,在日食中3.6f,编译 ...

3 在Java中解释浮点数?

Tt不是正常的“类型转换”。 我只想有一个等效的Java用于: 一些人可能猜到我只想试试这个 这是C代码,问题是如何在Java中制作它,因为那里没有指针和引用,是的,我实现了它,并且以1 / Math.sqrt()的方式运行得更快,而在第4个符号上首先出现错误! ...

4 Java中浮点数的精度错误

我想知道在 Java 中修复精度错误的最佳方法是什么。 正如您在以下示例中看到的那样,存在精度错误: 显示的结果是: 循环值:11 20.789999 循环值:22 41.579998 循环值:44 83.159996 循环值:88 166.31999 ...

5 如何验证Java中的浮点数? 用SpringMVC

如果有人可以帮助我弄清楚如何验证浮点数,我在徘徊。 我有一个仅验证整数的注释,并且我需要输入字段能够除十进制值之外的值,而不是0。 我尝试过的事情: 这不起作用,并允许将0作为有效输入传递。 公众使用时间 我尝试将变量的类型更改为BigDecimal,然后可以使用@De ...

6 Java中浮点数的比较

可以说,我有以下内容: 我想做的就是比较它们是否x大于y。 我对他们的平等不感兴趣。 我的问题是,仅对浮点值执行>或<检查时,应该考虑精度吗? 我是否正确假设仅在进行相等性检查时才考虑精度? ...

2014-01-25 02:06:21 4 276   java
8 Java中的空浮点数组

我试图用null和NaNs创建一个float数组: float[] fArray = {null, null}; 要么 float[] fArray = {float.NaN, float.NaN}; 在Java中可以做这样的事情吗? ...

2014-07-16 14:30:59 2 190   java
10 Java中的浮点数[重复]

这个问题已经在这里有了答案: 浮点运算没有产生确切的结果[重复] 7个答案 这是两个float之间的简单添加操作: 这将返回以下输出: 如何获得正确的值(6.85)? ...

2013-11-26 14:05:48 3 1154   java/ sum
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM