c – xa与浮标的x *(1a)相同吗?

c – xa与浮标的x *(1a)相同吗?,第1张

概述用float a = …;并且float inva = 1 / a;是x / a与x * inva相同吗? 这是什么情况呢? unsigned i = ...;float v1 = static_cast<float>(i) / 4294967295.0f;float scl = 1.0f / 4294967295.0f;float v2 = static_cast<float>(i) * 用float a = …;并且float inva = 1 / a;是x / a与x * inva相同吗?

这是什么情况呢?

unsigned i = ...;float v1 = static_cast<float>(i) / 4294967295.0f;float scl = 1.0f / 4294967295.0f;float v2 = static_cast<float>(i) * scl;

v1是否等于所有无符号整数的v2?

解决方法

is v1 equal to v2 for all unsigned integers?

是的,因为4294967295.0f是二的幂.当除数为2的幂时(假设倒数的计算不会溢出或下溢到零),除法和乘以倒数是相等的.

一般来说,乘法与乘法并不相等,仅在两种权力的特殊情况下.原因是对于(几乎全部)两个y的幂,1 / y的计算是精确的,所以x *(1 / y)只能轮回一次,就像x / y只有一轮一次.

总结

以上是内存溢出为你收集整理的c – x / a与浮标的x *(1 / a)相同吗?全部内容,希望文章能够帮你解决c – x / a与浮标的x *(1 / a)相同吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1255435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存