在乘以更大的值时获取值为-0.000000

jam*_*mes -2 c c++

为什么我得到一个值-0.000000.零负甚至存在吗?

我乘以更大的双倍价值.为什么我得到这样的结果?

它溢出了吗?我应该使用比这更大的数据类型吗?

Sad*_*que 6

来自维基:

 Does negative zero even exist?
Run Code Online (Sandbox Code Playgroud)

带符号的零为零,带有相关符号.在普通算术中,-0 = + 0 = 0.然而,在计算中,一些数字表示允许存在两个零,通常用-0(负零)和+0(正零)表示.这发生在整数的符号和幅度以及1的补码有符号数表示中,并且在大多数浮点数表示中.数字0通常编码为+0,但可以用+0或-0表示.

Is it overflowing ? should i use a bigger data type than this?
Run Code Online (Sandbox Code Playgroud)

在IEEE 754二进制浮点数中,零值由偏置指数和有效数表示,均为零.负零的符号位设置为1.作为某些计算的结果,可以获得负零,例如,作为负数的算术下溢的结果,或-1.0*0.0,或简单地为-0.0.

在此输入图像描述

  • 另外,由于输出格式的精度有限,OP可以简单地具有小的但非零的负值,其被打印为"-0.000000". (2认同)