双变量平方始终为正?

时间:2019-10-15 11:08:28

标签: floating-point double

存在双精度数据类型d和浮点数据类型f。 1)d * d始终大于或等于0.0? 2)(f + d)-f总是等于d?

1 个答案:

答案 0 :(得分:2)

您的问题应提及一种编程语言。既然没有,我们只能根据IEEE 754浮点标准的规则进行回答,并且编程语言可能无法完全按照您的意愿将其构造映射到IEEE 754的构造。

1)浮点值可以是有限的,无限的或NaN。对于有限和无限值,通常的符号规则适用:-*-产生+和+ * +产生+,因此对于有限或无限的d,我们有d * d ≥ 0。如果d为NaN,则d * dNaN,并且值NaN不大于或等于0

2)对于大多数(f + d) - fd的值,d不等于f。一个示例是f = 2 100 并且d =1。对于这些值(f + d) - f为0。即使使用值fd也可以看到问题。彼此靠近,例如f = 10和d = 0.1。使用这些值,f + d是一个接近10的数字。对于固定数量的有效二进制数字,表示10.…的空格不允许保留表示形式中存在的所有二进制数字0.1中的。再次减去10,则表明加法期间二进制数字已丢失。