如何将 Swift 中的数字相乘?
How to multiply numbers in Swift?
我正在 Swift 开发计算器,但遇到一个小问题:
将两个数字相乘时,我得到的结果与普通计算器的结果不同。
例如:
在Swift中:
0.333328247070312 * 16 = 5.33325195312499
在普通计算器中:
0.333328247070312 * 16 = 5.333251953
我应该怎么做才能得到与 Swift 中的普通计算器相同的结果?
您的 "regular calculator" 在结果打印中似乎有误或奇怪,因此,您不应该依赖它。我已经在 Python3 中重新检查了你的计算,它以 binary64 double 计算所有内容并打印最精确的十进制形式:
>>> 0.333328247070312 * 16
5.333251953124992
它比 Swift 输出更详细(一位数)。您的输出也无法验证为 binary32 计算,因为后者有 ~7 个正确的十进制数字,并且通常不会打印更多数字。这个计算器是什么?我想是一些基于 Pascal 的工具,因为它有自定义的 6 字节浮点数。
试着让你的计算器打印出最详细的表格。如果失败了,就扔掉它,用最精确的工具来验证,或者,如果你的任务真的是为了得到相同的结果,那就去弄清楚它处理的更多细节。
我正在 Swift 开发计算器,但遇到一个小问题: 将两个数字相乘时,我得到的结果与普通计算器的结果不同。
例如:
在Swift中:
0.333328247070312 * 16 = 5.33325195312499
在普通计算器中:
0.333328247070312 * 16 = 5.333251953
我应该怎么做才能得到与 Swift 中的普通计算器相同的结果?
您的 "regular calculator" 在结果打印中似乎有误或奇怪,因此,您不应该依赖它。我已经在 Python3 中重新检查了你的计算,它以 binary64 double 计算所有内容并打印最精确的十进制形式:
>>> 0.333328247070312 * 16
5.333251953124992
它比 Swift 输出更详细(一位数)。您的输出也无法验证为 binary32 计算,因为后者有 ~7 个正确的十进制数字,并且通常不会打印更多数字。这个计算器是什么?我想是一些基于 Pascal 的工具,因为它有自定义的 6 字节浮点数。
试着让你的计算器打印出最详细的表格。如果失败了,就扔掉它,用最精确的工具来验证,或者,如果你的任务真的是为了得到相同的结果,那就去弄清楚它处理的更多细节。