Java中的float是什么?


102

我写了这段代码:

float b = 3.6;

我得到这个:

错误:未解决的编译问题: 
    类型不匹配:无法从double转换为float

为什么?的定义是float什么?



1
@Sneftel这不是这个问题的重复。这个问题问为什么不编译(答案是“您必须f在文字上添加a ”),而另一个问题问为什么必须进行编译f。尽管它们是相关的,但不是重复的。
Mark Rotteveel

参见meta.stackexchange.com/questions/217401/…。链接问题的答案就是该问题的答案。
Sneftel

Answers:


180

在Java中,当您输入一个十进制数为时3.6,它被解释为doubledouble是64位精度的IEEE 754浮点,而float32位精度的IEEE 754浮点。由于a float的精确度低于a double,因此无法隐式执行转换。

如果要创建浮点数,则应以f(。:) 结尾3.6f

有关更多说明,请参见Java教程原始数据类型定义


40

做了

float b= 3.6f;

如果浮点文字后缀为ASCII字母F或f,则其类型为float。否则,其类型为double,并且可以选择在其后缀ASCII字母D或d


有没有办法检查字符串是否只有浮点值?
MasterJoe

13

问题是十进制数字默认为双精度。而且由于double不适合float,因此您必须明确地告诉您有意定义float。所以去:

float b = 3.6f;

8

在JAVA中,值如下:

  1. 8.5
  2. 3.9
  3. (等等..)

假定为double而不是float

您也可以执行强制转换以解决问题:

float b = (float) 3.5;

另一个解决方案:

float b = 3.5f;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.