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

Excel 将 3 个十进制数更改为完整数字,尽管有格式选项,甚至在公式中也是如此

姜增
2023-03-14

我的一个同事把他们的Excel表格发给我,让我看一下。问题是,对于一个非常具体的数字(56136.598),Excel会自动将该数字外推到小数点后10位,而不管格式选项如何。

单元格将数字显示到正确的小数点后3位,但如果您查看公式栏中的数字,它会显示所有小数点后10位。如果我将公式=轮(56136.598,3)写入=轮(56136.5979999999,3),它甚至会将数字更改为小数点后10位。

不幸的是,鉴于我所在的行业,我需要一些解释,为什么这个非常具体的数字会引起这种变化。仅仅使用圆角或 trunc 函数将其从小数点后 3 位删除是不够的,这个数字和这个单元格的设置与其余并行单元格计算的设置不同这一事实引起了一些批评。以前有人遇到过这种情况吗?我已经在Excel 2010和2019以及新工作表中尝试过,同样的问题。似乎 excel 拒绝接受小数点后 3 位的数字,并强制自行扩展到小数点后 10 位。

共有1个答案

淳于典
2023-03-14

这是正常的行为。请看下图,我刚刚在单元格中输入了< code>56136,598。

发生这种情况是因为 Excel 是一个数字计算程序而不是代数程序。所以这是一个精度问题。另请参阅 Microsoft Excel 中的数字精度。

卓越的结果不是绝对的,但非常接近正确。这些与数字之间的差异几乎为0(差异为00000000001)。

这实际上也是大多数普通计算器的作用(你只是看不到)。这正是计算器(和计算机)工作的本质。

所以没什么好担心的。

关于这一点的更多信息:了解浮点精度,又名“为什么Excel会给我看似错误的答案?”

 类似资料:
  • 问题内容: 我需要从随机整数(0-255)列表中创建一个十六进制数字字符串。每个十六进制数字应由两个字符表示:5-“ 05”,16-“ 10”等。 例: 我设法提出了: 但是,这看起来有点尴尬。有没有更简单的方法? 问题答案:

  • 我正在使用DecimalFormats将双打格式化为字符串。然后这个字符串被集成到我的表示层中。 问题:我想保留所有的小数。示例:“12345678.123456789” 格式:#.#- 我可以用##########对于大小数点,但是如果小数点更长呢? 我发现我的小测试程序很有用,想和大家分享。 你能帮我显示所有小数吗? 这导致: 编辑:一位用户提到了一个相关的问题:如何很好地将浮点数格式化为字符

  • 问题内容: 我想将整数数字格式化为十六进制字符串。 打印,但我希望它作为。我怎么做? 问题答案: 试试这个

  • 问题内容: 尝试执行数字格式异常时,出现异常 如果我减少十六进制数字中的一位,它将转换但不会转换。为什么以及如何解决这个问题? 问题答案: 这将导致整数溢出,因为整数始终在Java中签名。从该方法的文档中(重点是我的): 如果发生以下任何一种情况,将引发type 异常: 第一个参数为null或长度为零的字符串。 基数小于Character.MIN_RADIX或大于Character.MAX_RAD

  • 如何转换“大”十六进制数(字符串格式): EC 851 A 69 B 8 ACD 843164 E 10 CFF 70 CF 9 E 86 DC 2 FEE 3 CF 6 F 374 B 43 C 854 E 3342 A 2 F 1 AC 3 E 30 C 741 CC 41 E 679 DF 6 D 07 CE 6 FA 3 A 66083 EC 9 B 8 C 8 BF 3 AF 05 D

  • 问题内容: 我写了一些代码将十六进制显示字符串转换为十进制整数。但是,当输入类似100a或625b(带有字母的东西)时,我得到了这样的错误: java.lang.NumberFormatException:对于输入字符串:java.lang.Integer.parseInt(未知源)处的java.lang.NumberFormatException.forInputString(未知源)处为“ 1