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

为什么在VB.Net和Python中对浮点进行简单的数学运算会返回意外的(不准确的)结果?

常雅珺
2023-03-14
问题内容
x = 4.2 - 0.1

vb.net给4.1000000000000005
python4.1000000000000005

Excel给4.1
Google Calc给4.1

发生这种情况的原因是什么?


问题答案:

浮点/双精度。

您必须记住,以二进制表示,4.1 = 4 +1/10。1/10是二进制的无限重复和,就像1/9是十进制的无限和一样。



 类似资料:
  • 这样一个看似简单的数字怎么会“太大”而无法在64位内存中表达呢?

  • 问题内容: 有人可以解释一下吗(直接来自文档-强调我的): math.ceil(x) 以浮点数形式 返回 x 的上限,最小 整 数值大于或等于x。 math.floor(x) 以浮点数形式 返回 x 的下限,即小于或等于x的最大 整 数值。 为什么会和回报花车当它们被定义应该算整数? 编辑: 好吧,这有一些很好的论据来说明为什么它们 应该 返回浮点数,而当@jcollado指出它们实际上 _确实_

  • 本文向大家介绍简单谈谈php浮点数精确运算,包括了简单谈谈php浮点数精确运算的使用技巧和注意事项,需要的朋友参考一下 bc是Binary Calculator的缩写。bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有

  • 问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现。 解决方案 浮点数的一个普遍问题是它们并不能精确的表示十进制数。 并且,即使是最简单的数学运算也会产生小的误差,比如: >>> a = 4.2 >>> b = 2.1 >>> a + b 6.300000000000001 >>> (a + b) == 6.3 False >>> 这些错误是由底层CPU和IEEE 754标准通过

  • 问题内容: 我创建了一个从API获取URL并返回URL字符串作为结果的函数。但是,Xcode给我此错误消息: void函数中非预期的非无效返回值 有谁知道为什么会这样吗? 问题答案: 使用闭包而不是返回值:

  • 为什么in\u array()有时表现得如此奇怪,并返回如此意外的结果? 我们来看几个例子: 嗯?这里发生了什么!? (几年前,我开始怀疑这种奇怪的行为。不过我认为它可能对某些人有用,所以我进入了这个问题。)