当前位置: 首页 > 面试题库 >

Java float意外取整

凤柏
2023-03-14
问题内容

我使用的是float常数,并将对象的私有float变量设置为下面的float常数,但是当对象输出设置为它的值时,它将四舍五入到float的最后一位。

private final float RF_FREQUENCY = 956.35625f;
Object o = new Object();
o.setRFFrequency(RF_FREQUENCY);
System.out.println(o.getRFFrequency);

输出:956.35626

对象中的变量声明protected float rfFrequency;,下面是getter和setter。

public float getRFFrequency() {
        return rfFrequency;
    }
public void setRFFrequency(float value) {
        this.rfFrequency = value;
    }

知道为什么会这样吗?


问题答案:

由于单精度IEEE754浮点数仅具有23位精度(24位包括开始时的隐式1位)。

这大约等于七个十进制数字,您可以看到 您的 数字中包含八个数字。

发生的一切是计算机正在选择与您要代表的数字最接近的数字。

如果需要更高的精度,请使用双精度。这样就可以得到52/53位,大约等于15个十进制数字。



 类似资料:
  • 请帮助我有可能的解决方案我对Android开发还很陌生

  • 问题内容: 由于某种原因,我收到一条错误消息,但是实际上并没有在读取的任何代码中加下划线。我尝试清洁和重建它,但是没有用。它说它在第49行。 我的代码如下 下面的第49行 问题答案: 你内有两个“奇数”字- U + 200C (零宽不连字)和U + 200B (零宽度的空间)的第一个“e”和“m”个之间。“ l”和“ i”之间的“点击”中出现相同的字符。 只需删除并重新输入这些单词,错误就会消失。

  • 我为学校制作了一个java程序,允许客户购买火车票。到目前为止,一切都很完美,除了当我调用final方法(当前的final方法最终会有更多)时,它会打印我命令该方法打印的内容,但它也会输出一些随机的文本行,我无法确定何时。我将粘贴下面的程序代码,并在运行程序时显示控制台。我将努力突出问题。非常感谢,希望有人能帮忙。p、 程序应在“测试”结束。 这是我运行程序时出现的错误(没有以“test”结尾,我

  • 我知道,要放入值,我可以,要检索值,我可以,但在下面的代码中,它的行为不像预期的那样。检索值时,我获得。 设置值的代码: 并且我正在检索BroadCaseReceiver的onReceive中的值:[省略的无关代码]

  • 问题内容: 在尝试进入sql查询数组并获得以下javascript错误后,我尝试通过php jquery传递json。 返回sql结果的函数: 以这种方式使用此功能后, 而javascript代码是这样的: 如何纠正此错误以及如何从jquery读取json? 问题答案: 您不需要调用,因为jQuery自动执行该调用,因为如果未指定属性,则jQuery会尝试猜测它并调用正确的函数来解析响应,然后再将

  • 问题内容: 为什么每次我做时:- 它只是解析很好,但是当我这样做时:- 它给我一个错误,说:- 问题答案: 您要它解析JSON文本(不是)。那是无效的JSON,字符串必须用双引号引起来。 如果要与第一个示例等效: