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

表达式与赋值对象之间的浮点不一致

慕容超
2023-03-14
> 0.1f+0.2f==0.3f
False

> var z = 0.3f;
> 0.1f+0.2f==z
True

> 0.1f+0.2f==(dynamic)0.3f
True

编辑:我明白为什么浮点算术是不精确的,但不明白为什么它会不一致。

尊敬的C可靠地确认了0.1+0.2==0.3适用于单精度浮点,但不适用双精度浮点。

共有1个答案

翟功
2023-03-14

我强烈怀疑您可能会发现,在使用调试器和不使用调试器的情况下,以及在发布配置中与在调试配置中运行这些代码时,会得到不同的结果。

在第一个版本中,您要比较两个表达式。C#语言允许以比源类型更高精度的算术计算这些表达式。

在第二个版本中,您将加法结果赋值给一个局部变量。在某些情况下,这将迫使结果被截断到32位,从而导致不同的结果。在其他情况下,CLR或C#编译器会意识到它可以优化掉局部变量。

 类似资料:
  • 本文向大家介绍浅谈C++中对象的复制与对象之间的相互赋值,包括了浅谈C++中对象的复制与对象之间的相互赋值的使用技巧和注意事项,需要的朋友参考一下 C++对象的复制 有时需要用到多个完全相同的对象,例如,同一型号的每一个产品从外表到内部属性都是一样的,如果要对每一个产品分别进行处理,就需要建立多个同样的对象,并要进行相同的初始化,用以前的办法定义对象(同时初始化)比较麻烦。此外,有时需要将对象在某

  • 问题内容: 我有一个任务要匹配浮点数。我为此编写了以下正则表达式: 但是,它返回一个错误: 据我所知,我们还需要使用转义字符.。请纠正我哪里我错了。 问题答案: TL; DR 使用[.]代替.和[0-9]代替\d以避免在某些语言(例如Java)中转义问题。 感谢无名的人最初认识到这一点。 匹配浮点数的一种相对简单的模式是 这将匹配: 查看工作示例 如果您还想匹配123.(无小数点的句点),则需要稍

  • 有人能告诉我以下示例中的和运算符之间的区别吗:

  • 我想问一下是否可以在RGB和表示颜色范围的一个连续颜色值之间进行转换(例如在浮点数[0…1]或整数[0…255]中)。 E、 我有一个像彩虹一样的连续颜色范围: 红色-橙色-黄色-绿色-蓝色-靛蓝-紫色 - 现在我想将值(0.5 =绿色)转换为相等的RGB值([0,1,0]?)。使用传递函数(后向和前进)可以做到这一点吗?也许在蟒蛇?

  • 问题内容: 最近我遇到了一个问题:赋值运算符链理解。 在回答这个问题,我开始怀疑我自己的加法赋值运算符的行为的理解或任何其他(,,等)。 我的问题是,下面的表达式中的变量何时更新到位,以便其更改的值在求值过程中反映在表达式的其他位置,其背后的逻辑是什么?请看以下两个表达式: 表达式1 表达式2 在第一个表达式中,当计算最里面的表达式时,似乎不更新的值,因此结果是而不是。 但是,在第二个表达式中,的