首页 > 后端开发 > C++ > 为什么0.09f * 100F似乎不超过C#中的0.09f * 99.999999f?

为什么0.09f * 100F似乎不超过C#中的0.09f * 99.999999f?

Mary-Kate Olsen
发布: 2025-01-31 04:21:11
原创
512 人浏览过

Why Does 0.09f * 100f Seemingly Not Exceed 0.09f * 99.999999f in C#?

c#浮点算术:为什么精确

> C#中的浮点数

浮点数,虽然通常使用,但具有固有的局限性,可以产生意外的结果。让我们检查一个说明这种不精确的案例。

考虑此C#代码段:

<code class="language-csharp">class Program
{
    static void Main(string[] args)
    {
        float f1 = 0.09f * 100f;
        float f2 = 0.09f * 99.999999f;

        Console.WriteLine(f1 > f2); // Surprisingly outputs "false"
    }
}</code>
登录后复制

该程序令人惊讶地输出“ false”,即使f1(0.09100)在逻辑上应该大于f2>(0.0999.999999)。这是由于浮点表示的固有局限性。

>

>浮点类型,例如float(C#中的32位)的精度有限。 它们只能准确地表示有限数量的十进制数字(float>约为7个)。 涉及浮点数的计算引入了舍入误差,这些错误会像观察到的那样累积并可能导致差异。 在这种情况下,在计算和存储期间的舍入错误导致它们被认为是相等的,甚至由于这些累积的错误,f1甚至略小。 f2为了全面了解浮点精度及其含义,请咨询确定的资源:“每个计算机科学家对浮点算术都应了解的知识。”f1>

以上是为什么0.09f * 100F似乎不超过C#中的0.09f * 99.999999f?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板