【发布时间】:2021-07-08 15:53:27
【问题描述】:
我正在用 Swift 编写一个程序,该程序采用随机字节的乘法逆运算。有时,字节为0,当乘法逆时,结果为inf。
乘法逆运算正在使用
powf(Float(byte), -1.0)
byte 的类型为 UInt8。如果byte 等于0,则结果为inf,如前所述。 0的乘法逆如何是无穷大的?因为0/0 的乘法逆元是0/0,所以乘法逆元不也是0吗?
【问题讨论】:
-
alias 的答案非常适合 IEEE 方面,但我想检查您的评论,即零的乘法逆数为零是有意义的。一个值的乘法逆元是乘以产生 1 的数字。0*0 绝对不是 1。关于
pow(0.0,-1.0)的结果应该返回什么有很多合理的论据(甚至 0 也是一个合理的答案;它是pow(Int(0),-1)返回什么)。但它永远不会是 0 的乘法倒数。这只是意味着pow(x, -1)并不总是返回乘法倒数。 -
(应该是
pow(Decimal(0), -1))
标签: swift floating-point exponent uint