Python中的默认舍入模式(舍入到最近等)是什么?我们如何指定它?
使用基于IEEE754的平台(像大多数现代平台一样,包括x86,ARM,MIPS ......),它的默认模式"舍入到最近,连接到偶数"是Python标准库中唯一可用的模式.这是由标准化的默认值和库方法的缺失"提供"来改变它.有更多的语言不允许更改舍入模式 - 例如Java - 所以这不是一个孤立的Python奇思妙想.
实际上,改变这一点的理由太少了.IEEE754的直接舍入模式在其使用中非常特殊.(我不道歉坚持默认舍入的方法,但只是对它进行评论.)例如,将1e308乘以1e308并将舍入为零或减去无穷大导致大约1.8e308,因此,结果也是如此远非确切的答案和基于POLA的(无限).如果您确实需要某些特定的计算模式,请考虑使用特定的库,如MPFR或gmpy2.
如果您坚持在没有专门用于浮点计算的外部模块的情况下进行更改,请尝试fesetround
通过ctypes
模块或模拟使用C库,例如此处.同样,您可以选择使用此类黑客并对所有后果负责.我建议将所有具有特殊舍入的部分包装到C级代码中,以恢复函数退出时的默认模式.