加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:23:53 所属栏目:百科 来源:网络整理
导读:用float a = …;并且float inva = 1 / a;是x / a与x * inva相同吗? 这是什么情况呢? unsigned i = ...;float v1 = static_castfloat(i) / 4294967295.0f;float scl = 1.0f / 4294967295.0f;float v2 = static_castfloat(i) * scl; v1是否等于所有无符号整
用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只有一轮一次.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读