当前位置: 首页 > 知识库问答 >
问题:

浮动的二进制数字提升

林华皓
2023-03-14

在5.6.2的JLS中。二进制数字提升:

运算符对一对操作数应用二进制数字提升时,每一个操作数都必须表示一个可转换为数字类型的值,以下规则按顺序适用:

如果任何操作数是引用类型,则进行解装箱转换(§5.1.8)。

加宽基元转换(§5.1.2)应用于转换操作数中的一个或两个,如下规则所规定:

如果其中一个操作数是double类型,则另一个操作数转换为double。

声明

中的算术运算(+,-,*,/)中的所有浮点值(float和double)在执行算术运算之前都转换为double类型。

根据我的理解,根据JLS,将1个浮点数和1个整数相加将产生一个浮点数。然而,根据其他来源,加上1个浮点数和1个整数会导致双?

共有1个答案

梅飞宇
2023-03-14

当一个消息来源做出与JLS相反的声明时,很有可能它是错误的。在这种情况下,下面演示了JLS描述的行为:

    Number n = 1 + 0.1f;
    System.out.println(n instanceof Float); // true
    System.out.println(n instanceof Double); // false
 类似资料:
  • 问题内容: 与浮点变量一起使用时出现问题(向下舍入/截断精度部分)。如何正确执行? 游乐场:https : //play.golang.org/p/49TjJwwEdEJ 输出: 我期望的输出是的,但实际产量。 问题答案: 原始问题: Golang中的楼层号不正确 将Math.Floor与float变量一起使用时出现问题(向下舍入/截断精度部分)。我该怎么做呢? 我预计1980 * 0.1 / 1

  • 问题内容: 我正在使用python shell来解决print命令在python中的工作方式。 当我输入 打印01 1 打印010 8 打印0100 64 打印030 24 这里发生了什么?只是基数2?为什么第二个位置的“一个”打印为8?如果不是二进制,应该不是2吗? 问题答案: 以0开头的数字在Python 2中将其标记为八进制。这被认为是令人困惑,令人惊讶且不一致的,因为以0x开头会将其标记为

  • 主要内容:二进制数、八进制数和十六进制数的表示,二进制数、八进制数和十六进制数的输出C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。 二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。 1) 二进制 二进制由 0 和 1 两个数字组成,使用时必须以

  • 问题内容: 我想将二进制数转换为浮点数。这是一种可能性的示例: 给我正确的输出: 不幸的是,我正在使用二进制 字符串 ,即,我需要类似的东西。 但是,这不起作用: 我尝试使用它将带引号的可打印数据块转换回二进制并返回二进制数据。但是最终,我得到了同样的错误: 我了解输出数字是整数的情况,但是如果我想获得数字12.546怎么办?那么该函数对二进制字符串的调用是什么样的? 问题答案: 另一种选择是做

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。

  • 与十进制相似,二进制数也可以表示浮点。现在我读到它可以有类似的浮动 :,:,:...等等。但是,例如,0.1(十进制)如何用二进制表示? 另外,给定一个十进制浮点数,如何将其转换为十进制等价物(假设它不是那么简单)。 编辑:所以我知道更好的问题应该是;如何将十进制浮点转换为二进制?现在我知道我们乘以小数部分,直到它变成零。现在很有可能两个浮点可以有相同的表示,对吗?