c中计算double"a 1 1000应该结果是

2020-12-03 21:17:01 字数 6097 阅读 1487

1楼:匿名用户

c# 中 如果相除的两个数都是整数(int 型) 那么除的结果就是只取整数部分 所以你才会取到0 如果你要取精确的值 那么相除的两个数中其中一个必须不为纯整数

double a=1/1000 要么变成double a=1.0/1000 要么变成double a=1/1000.0 这样才会取到具体结果

2楼:匿名用户

2个int型相除结果还是int型

分子或分母任意一个改为doubel型就可以了 比如把1改为1.0

或者你在1后面加个f 告诉计算机是doubel型

3楼:鬼剧

两个整形运行不会提升到双精度..即使你结果要求双精度,所以只能1/1000.0 1.0/1000 1/1000*1.0 这样来

4楼:匿名用户

a=1.0/1000

或者a=1f/1000

c# 中计算 double 类型时出错,,0.1*0.1 为什么不是等于0.01

5楼:匿名用户

在我这里调试怎么没问题。。。

也是c#

double a = 0.1;

double i = a * a;

或者i = 0.1 * 0.1;结果都是0.01

6楼:

浮点比较式不能用等于判断的。。。计算机处理的时候是会出现偏差的。。。一般都是设置一个偏差值比较。。。

计算机的本身的限制没有办法。。。如果是确定了精度的话可以取整比较,不过是会有点偏差的

假设你的数值精度只有小数点后3位,那就直接四舍五入到小点后三位,然后作为字符串比较或者乘1000取整比较

7楼:线玉兰秋汝

两个不同数据类型做运算就会出现这种问题,有些时候,即使相同数据类型也会

主要就是计算机各数据类型精度问题

所以,如果你想要25

*0.0001

=0.00025

就把2个数字全都付给double型变量

doublet1=

25;doublet2=

0.0001;

doublem=

t1*t2;m就是你想要的

c# 1除以3,但是计算结果变成0了,怎么解决

8楼:匿名用户

c#里面整数间除法是不保留余数的整数结果,所以1/3为0;

要得到结果可以 double result = (double)1/3;

保留小数位:double result = math.round((decimal)1/3,2);

要是想保留2位小数(四舍五入):

decimal result = math.round((decimal)1 / 3, 2, midpointrounding.awayfromzero);

9楼:为啥啊不能重名

你用的整形int做的~1除以3等于零

换成float 或者double 的浮点型 就能算出小数来着。

double a=1/3; 为什么a为零?

10楼:匿名用户

这涉及到类型转换的顺序:1是整型数,3是整型数,整型数支持除法运算,因此1/3先按照整型数运算,运算结果是整型数0。而结果要求是double,则将0转换为double类型0.

0。解决办法:double a=1.0/3;

在运算中,机器会先将3转换为double类型的3.0(不是将1.0转换为1,因为强转都是向精度高的方向转换)。

11楼:匿名用户

1/3 ,1和3都是int型,1/3等于0.333...,变成0,再赋给double a;

所以a为0。这里先看1/3,再赋值。

如果要让a为小数,只要另1为1.0或3为3.0即可,或者强制转型。

12楼:

改成1.0/3.0就行了,或者(double)1/3

因为1/3是两个整数相除,如果不加强制转换类型,c语言默认除完的结果是取整数,所以a就是0了

13楼:匿名用户

1/3的值是0

所以赋给a的值也为0

14楼:

double a = (1.0)/(3.0)就不是0了

c#中double 数组里做除法怎么保留小数点后面的数据

15楼:沙漏

在c#中除法默认不保留小数点,

decimal result = 100 / 1000; // result = 0;

需要保留小数点,可以如下

decimal result = 100m / 1000;

m代表decimal.

如果是变量要

如何处理呢?这是需要用到math.round()

int x= 120;

int y= 100000;

decimal result = (decimal)x / y; // (decimal)x/ y 表示把 x 转换成decimal再做除法运算,int 除 int 是会丢失小数点的。

不过这样的小数点后面的数太多了,需要处理下,这时候需要math.round()

decimal result = math.round((decimal)x/ y,2); 后面的2表示保留小数点后2位小数

在c#与法中,“/”除后所得的值的类型,跟他的除数和被除数的类型有关。如:

int a=4;

int b=5;

float c=a/b ;

则结果为0(因为会先进行int的除法操作,得出结果0,再将结果转为float 0;);

总之,得出的数都是整形的,最终发现原来除后所得的值的类型,跟他的除数和被除数的类型有关。所以,应写成:

float a=3;

float b=5;

float c=a/b;

这样,才能得出正确的结论!

在int里,2/5的结果就是0

又因为表达式(float num = 2/5)左边是float,而int可以隐式转换成float,所以,c#把0变成了float的:0.0

如果你要得到正确的结果,必须至少让等号右边的一个数为float:加个小数点,或者加上f:

2.0/5

或2.0/5.0

或2f / 5

希望对你有帮助哈!

16楼:匿名用户

结果为0.0的原因是 (b[i] - kongbai[i]) 和 (huangban[i] - kongbai[i])的计算结果都是整型,而在c#中整形除法结果默认为整型。

除法的被除数或者除数之一为double类型的,c#将另一项隐式转换为double类型,计算结果为double类型。所以,将 (b[i] - kongbai[i]) 和 (huangban[i] - kongbai[i])任一项或者两项都转换为double类型,即可获得double类型的计算结果。

要想保留小数点后六位,需要用math.round()。修改后的**如下,在c#中通过测试。

int i=0;

double yangpin = new double[601];//样品

int huangban = new int[601];//黄板

int kongbai = new int[601];//空白

int b =new int[601];

yangpin[i] = math.round(convert.todouble(b[i] - kongbai[i]) / convert.

todouble(huangban[i] - kongbai[i]), 6);

17楼:tn瓶邪

看看下面的结果

decimal result = 100 / 1000; // result = 0;

需要保留小数点,可以如下:

decimal result = 100m / 1000;

m代表decimal.

如果是变量要如何处理呢?这是需要用到math.round()

int x= 120;

int y= 100000;

decimal result = (decimal)x / y; // (decimal)x/ y 表示把 x 转换成decimal再做除法运算,int 除 int 是会丢失小数点的。

不过这样的小数点后面的数太多了,需要处理下,这时候需要math.round()

decimal result = math.round((decimal)x/ y,2);

后面的2表示保留小数点后2位小数.

18楼:匿名用户

因为你都是整型类型的,所以结果会是0,你可尝试把其中一个转换成doblue再做除法

yangpin[i]=(b[i]-kongbai[i])/convert.todouble(huangban[i]-kongbai[i]);

19楼:匿名用户

double yangpin = new double[601];//样品

int huangban = new int[601];//黄板int kongbai = new int[601];//空白yangpin[i]=math.round((b[i]-kongbai[i])*1.0/(huangban[i]-kongbai[i]),6);

20楼:匿名用户

math.round(yangpin[i],6);你试试~

c#中int与double相乘,结果错。25 * 0.000001=0.000024999999999999998,1234567*0.1=123456.70000000001

21楼:匿名用户

两个不同数据类型做运算就会出现这种问题,有些时候,即使相同数据类型也会

主要就是计算机各数据类型精度问题

所以,如果你想要25 * 0.0001 = 0.00025就把2个数字全都付给double型变量

double t1 = 25;

double t2 = 0.0001;

double m = t1 * t2;

m就是你想要的

22楼:匿名用户

c#中 浮点类型都是不精确的float,double.

你可以使用decimal

关于c#中double转int的问题,为什么会少1??

23楼:阳光的雷咩咩

用math下面的函数

:doubled1=1.1d;

inti1f=(int)math.floor(d1);//1inti1c=(int)math.ceiling(d1);//2

inti1r=(int)math.round(d1);//1doubled9=1.9d;

inti9f=(int)math.floor(d9);//1inti9c=(int)math.ceiling(d9);//2

inti9r=(int)math.round(d9);//2

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

24楼:龍__鳳

#include

#include//加上头文件

usingnamespacestd;

voidmain()

25楼:匿名用户

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

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

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

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

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

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

c语言里(21)什么结果,在C语言中(-1)&&(-1)结果是?

1楼 匿名用户 是逻辑与运算,其结果只能是0或1, 当参与运算的两个数中有一个是0,其结果就是02是非0值 1也是非0值 所以, 2 1 的结果是1 在c语言中 1 1 结果是? 2楼 匿名用户 在c或c 中 是与的操作符,只要操作符两边都为真 不为0就为真 ,结果就为真。因为 1的二进制码 1的二...