Floating point 双变量的平方总是正的?

Floating point 双变量的平方总是正的?,floating-point,double,Floating Point,Double,存在双数据类型d和浮点数据类型f。 1) d*d始终大于或等于0.0? 2) (f+d)-f总是等于d?你的问题应该提到一种编程语言。由于没有,我们只能根据IEEE 754浮点标准的规则进行回答,编程语言可能不会像您希望的那样将其结构映射到IEEE 754的结构 1) 浮点值可以是有限、无限或NaN。对于有限和无限值,通常的符号规则适用:-*-product+和+*+product+,因此对于有限或无限d,我们有d*d≥ 0。如果d为NaN,则d*d为NaN,且值NaN不大于或等于0 2) (f

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

你的问题应该提到一种编程语言。由于没有,我们只能根据IEEE 754浮点标准的规则进行回答,编程语言可能不会像您希望的那样将其结构映射到IEEE 754的结构

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


2)
(f+d)-f
对于
d
f
的大多数值不等于
d
。一个例子是f=2100和d=1。对于这些值
(f+d)-f
为0。即使使用彼此更接近的
f
d
值,也可以看到该问题,例如f=10和d=0.1。对于这些值,
f+d
是一个接近10的数字。对于固定数量的有效二进制数字,表示
10..
所用的空间不允许保留表示
0.1
的所有二进制数字。再次从中减去10表示二进制数字在加法过程中丢失。

您的问题应该提到一种编程语言。由于没有,我们只能根据IEEE 754浮点标准的规则进行回答,编程语言可能不会像您希望的那样将其结构映射到IEEE 754的结构

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


2)
(f+d)-f
对于
d
f
的大多数值不等于
d
。一个例子是f=2100和d=1。对于这些值
(f+d)-f
为0。即使使用彼此更接近的
f
d
值,也可以看到该问题,例如f=10和d=0.1。对于这些值,
f+d
是一个接近10的数字。对于固定数量的有效二进制数字,表示
10..
所用的空间不允许保留表示
0.1
的所有二进制数字。再次从中减去10表明二进制数字在加法过程中丢失了。

您对f为浮点且d为双精度这一事实不予评论,但我认为这不会对您的答案产生任何影响。在我所知道的既有float也有double的语言中,f将被转换为double,算术将用double完成。谢谢你的回答。我用的是C语言!但是如果d==1,f==2^100,那么(f+d)==2^100(因为d太小了?),那么(f+d)-f==0。d和f的不确定度是相对的吗@주혜민 对IEEE 754双精度(大多数编译器中的C类型
double
)只能表示权重为2^100到2^48(53位二进制数字)的位。如果试图将小于2^48的数量添加到2100,则较小数量的所有数字都将丢失。如果一个人试图将一个2^80到2^100之间的量相加,那么较小的量中最低权重的20位二进制数字可能会丢失。你不会评论f是浮点,d是双精度的事实,但我认为这不会对你的答案产生任何影响。在我所知道的既有float也有double的语言中,f将被转换为double,算术将用double完成。谢谢你的回答。我用的是C语言!但是如果d==1,f==2^100,那么(f+d)==2^100(因为d太小了?),那么(f+d)-f==0。d和f的不确定度是相对的吗@주혜민 对IEEE 754双精度(大多数编译器中的C类型
double
)只能表示权重为2^100到2^48(53位二进制数字)的位。如果试图将小于2^48的数量添加到2100,则较小数量的所有数字都将丢失。如果试图将2^80到2^100之间的数量相加,则较小数量中最低重量的20位二进制数字可能会丢失。