c++中double类型的0乘以负数输出为-0,为什么?详情

2020-11-24 19:06:01 字数 3020 阅读 6377

1楼:匿名用户

好吧,这道题太让我好奇了,一看没人回答,我自己试了一下。

一样的程序,我用vc6.0输出0。。。我就不截图了。

看来和编译器有关。。。

2楼:匿名用户

我不能肯定,但是我认为这取决于编译器的实现,他估计是看见乘法就直接就进行符号位乘法,即正正为正、负负为正、正负为负,以此修改结果的符号位,输出时查看符号位,如果符号位为1,则必定输出“-”,这样就会出现你看到的情况了,当然只是我的猜想。。。换句话就是我认为这是程序设计的结果。

c++中double型数值计算结果为0为什么输出的不是0?

3楼:龍__鳳

#include

#include//加上头文件

usingnamespacestd;

voidmain()

4楼:匿名用户

这是由于double类型的精度引起的。

在c/c++中,float和double类型,被称为浮点型。

浮点型是c/c++中用来存储实数的。而存储的值,并不是实际值,而是近似值。

即,double类型和float类型存储的值均不是准确值,而是一个和准确值接近的值。

这样,在计算中,就会有精度缺失的情况出现,运算越多,这个精度缺失出现的概率越大。

当经过大量计算后,就可能出现结果与真实结果偏差比较大的情况,也就是实际获得的结果并不准确。

5楼:匿名用户

#include

#include

using namespace std;

void main()

6楼:匿名用户

cout<< (fabs(n-0.0)<1.0e-3)<

c++,用double型变量进行运算,结果应该为0,但是输出是—0.000000,我考虑应该是do 50

7楼:gta小鸡

定义一个极小的量作为阈值,当浮点型减去其强制转换后的整型的绝对值小于这个阈值时,认为浮点型值等于该整型。例:

#define zero 1e-12

double example;

if(example-(int)example1-zero) example=(int)example+1;

8楼:匿名用户

double显示就是带小数的,不会显示0的,自己控制输出格式呀。你的考虑那个叫浮点型的舍入误差

9楼:黑贝天枰

强制类型转换为int型

c++中相等的两个double数值相减为什么输出的不是0?

10楼:糖糖寳寳

1、因为double类型都是1.*********(若干个0和1,二进制)乘以2的若干次幂来表示一个数,所以,和十进制的小数势必不能够一一对应,因为位数有限,总要有一个精度(两个数之间的实数是任意多的,但是很明显double不可能表示任意多的数),那么double的0就只是用一个近似0的数来表示的

2、浮点数比较相等的时候,不能用==比较,要采用if(abs(x-y)<=epsilon)的方式,其实epsilon是预定义的很小的数,也就是要求的精度,比如类似1e-6,也就是说,比较两数之间的差是否在可接受的精度范围内。

3、和0比较,就是if(abs(x)<=epsilon),绝对值小于要求精度,就可以认为是0.

11楼:匿名用户

浮点数精度不准确,不能对浮点数进行精确的比较操作,如要一定要用浮点进行比较,可用

fabs(n-0.0)<1.0e-3; 保证在精度范围;

12楼:匿名用户

#include

#include

#include

using namespace std;

void main()

c++ double 可以表示负数吗?

13楼:匿名用户

double类型的取值范围:

负值取值范围为 -1.79769313486231570e+308 到 -4.94065645841246544e-324

正值取值范围为 4.94065645841246544e-324 到 1.79769313486231570e+308

所以,很明显double 可以表示负数

为什么c++执行不了,无论怎么输负数,输出结果都是负数的个数为0啊

14楼:匿名用户

你这是java不是c++...

不管是java还是c++,double类型最好不要直接用操作符来比较,要调用函数

c++ 中double数据的一个表达式,计算结果为0,但是用cout输出为8.88178-016,这是为什么啊?怎样才能显示0

15楼:芭拉绝舞

这个结果很好啊,无限趋向0了,如果你要好看一点儿,可以int强制转换一下

16楼:匿名用户

应该是你最初没有给这个double数据赋初值吧,如没有赋初值的话,你的运算结果就很可能是上面的结果。因为在你定义这个double数据的时候(未赋初值时)此时的这个数据是个随机数。

17楼:油哥来了

你把你写的**发过来。

c++中定义的变量为double型,为什么输出的数值总是不正确这是为什么,**如下

18楼:山水阿锐

您好,您试试这个:

sum = sum+(1.0/num);

joychen_

如果不成,再试试:

num的类型改为double

yy_神_eeee

19楼:yy_神

num的类型改为double