Python 中的默认舍入模式(舍入到最接近的值等)是什么?我们如何指定它?
最佳答案
对于基于 IEEE754 的平台(就像大多数现代平台一样,包括 x86、ARM、MIPS...),它的默认模式“舍入到最近,结到偶数”是 Python 标准库中唯一可用的模式。这是由标准化默认值和缺少库方法来更改它的“提供”。还有更多不允许更改舍入模式的语言 - 例如Java - 所以这不是一个孤立的 Python 突发奇想。
实际上,改变这一点的理由太少了。 IEEE754 的直接舍入模式在使用上非常特殊。 (我不会为坚持默认舍入的方法道歉,只是简单地评论一下。)例如,将 1e308 乘以 1e308 并舍入到零或负无穷大的结果大约为 1.8e308,因此,结果太与确切答案和 POLA 相去甚远- 基于一(无穷大)。如果您确实需要一些特定的计算模式,请考虑使用特定的库,例如 MPFR 或 gmpy2。
如果您坚持在没有专门用于浮点计算的外部模块的情况下更改它,请尝试通过 ctypes
模块或模拟使用 C 库 fesetround
,例如here .同样,您可以选择使用此类黑客手段并对所有后果负责。我建议将所有带有特殊舍入的部分包装成 C 级代码,这样可以在函数退出时恢复默认模式。
关于python - python中的默认舍入模式,以及如何将其指定为另一个舍入模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030509/