当前位置:  开发笔记 > 后端 > 正文

F#(和.NET)中的浮点精度

如何解决《F#(和.NET)中的浮点精度》经验,为你挑选了1个好方法。



1> kvb..:

    对于任意实数,整数类型或浮点类型仅提供近似值.积分近似在一个方向或另一个方向上永远不会超过0.5(假设实数适合该整数类型的范围).浮点近似永远不会超过一小部分(同样,假设实数在该浮点类型支持的值范围内).这意味着对于较小的值,浮点类型将提供更接近的近似值(例如,在浮点数中存储PI的近似值将比int近似值3更准确).但是,对于非常大的值,积分类型的近似值实际上会优于浮点类型(例如,考虑值9223372036854775806.7,当表示为9223372036854775807为长时,仅取消0.3,但在存储为9223372036854780000.000000时表示为9223372036854780000.000000一个浮子).

    这只是一个关于如何打印值的工件.9/10和1/10不能完全表示为浮点值(因为分母不是2的幂),就像1/3不能精确写成小数(你得到0.333 ...其中3的重复永远).无论您使用何种.NET语言,此值的内部表示形式都是相同的,但打印值的不同方式可能会以不同方式显示.请注意,如果在FSI中评估1.0 - 0.9,结果将显示为0.1(至少在我的计算机上).

    您在科学计算中使用的类型将取决于您要实现的目标.您的答案通常只是近似准确.你需要多准确?您的性能要求是什么?我认为十进制类型实际上是一个固定点数,这可能使它不适合涉及非常小或非常大的值的计算.另请注意,F#包含任意精度有理数(使用BigNum类型),根据您的输入,这也可能是合适的.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有