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的二...