gpt4 book ai didi

java - float 常量的 Java 解释器的默认数据类型

转载 作者:行者123 更新时间:2023-12-04 04:44:39 24 4
gpt4 key购买 nike

这对所有人来说可能是一个简单的问题,但它让我的脑袋被一个问题搞得一团糟,“为什么会这样?”

正如你在下面的代码中看到的,我已经声明了一个 float变量并为其赋值。当这段代码被编译和解释时,我会得到一个错误 possible loss of precision这是正确的,因为 float 常量的java解释器的默认数据类型是double。

查询 1:我想知道,当我的 float 常量可以容纳 float 提供的字节数时,为什么我要在我的应用程序中浪费内存来获取 double。

查询 2:现在,如果我指定 float a = 3.1415f ;我会得到输出,但现在为我的 a 分配了多少内存变量。

float a = 3.1415 ;
System.out.println("Value of a:"+a);

我真的很想了解这个hack,为什么会这样?

最佳答案

Query 1 : I wonder, why should I waste memory in my application for double when my floating constant can accommodate in number of bytes float provide.



这只是默认为 double 的浮点文字的问题.来自 section 3.10.2 of the JLS :

A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d (§4.2.3).



您需要决定所需的类型,并编写适当的文字。您几乎肯定不应该根据您指定的位数来选择数据类型 - 并且请注意,仅仅因为 float可以保持一定数量的十进制数字的精度并不意味着它可以准确地表示具有那么多有效数字的数字。例如,没有二进制浮点类型可以精确地表示 0.1,就像您不能将“三分之一”写为有限十进制数一样。

作为旁注,我个人喜欢添加 d明确表示 double无论如何,只是为了清楚起见。

下一步:

Query 2: Now if I specify float a = 3.1415f ; I will get the output but now how much memory is allocated for my a variable.



4 个字节,因为它是一个 float .

关于java - float 常量的 Java 解释器的默认数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18381530/

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