【问题标题】:How to multiply numbers in Swift?如何在 Swift 中将数字相乘?
【发布时间】:2016-03-09 18:06:06
【问题描述】:

我正在使用 Swift 开发计算器,但我遇到了一个小问题: 两个数字相乘时,我得到的结果与普通计算器不同。

例如:

在斯威夫特中:

0.333328247070312 * 16 = 5.33325195312499

在普通计算器中:

0.333328247070312 * 16 = 5.333251953

我应该怎么做才能在 Swift 中获得与常规计算器相同的结果?

【问题讨论】:

标签: swift floating-point calculator


【解决方案1】:

您的“常规计算器”在结果打印中似乎错误或奇怪,因此,您不应依赖它。我已经重新检查了您在 Python3 中的计算,已知该计算以 binary64 双精度计算所有并打印最精确的十进制形式:

>>> 0.333328247070312 * 16
5.333251953124992

它比 Swift 输出更详细(一位数)。您的输出也无法验证为 binary32 计算,因为后者有大约 7 个正确的十进制数字,并且通常不会打印更多数字。这个计算器是什么?由于其自定义的 6 字节浮点数,我想一些基于 Pascal 的工具。

试着让你的计算器打印出最详细的表格。如果失败了,就把它扔掉,用最精确的工具来验证,或者,如果你的任务真的是要得到同样的结果,那就弄清楚关于它的处理的更多细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多