
long a,b;
int c;
c=1000*a/b
但是因为c是int型
所以有误差
想先来个float或者double型的d
使得d=a/b
然后再c=1000*d
这样误差就少一些...
能提供好方法的朋友我会追加的
唉
简单问题搞死人啊
long a,b;
int c;
c=1000*(float)(a/b);
这样a/b得出的结果就会按浮点神或数给出,而游铅伍不会舍去尾数,与设d效果相同。
PS:c++中的强激梁制类型转换函数是 (T)a ,函数返回一个转换后的T型变量,其中T表示要转换的类型,a是变量。如要把long型的temp转换成double型,并赋给number,只需 number=(double)temp; 即可。
long a,b;
int c;
float d;
d=(double)1000*a/b;
这样不用你余橡的c了,或者梁毁行橡哗你把c定义成double类型吧
实际处理中一般直接写成(int)(1000.0*a/b)就可者枣以运伏
计算1000.0*a的时候因为1000.0是double所以a也自动转换成double,首悄拆1000.0*a的结果于是也是个double
c=int((double)1000*(double)a/(double)b); 这种方法叫现式强制转化。尺告
不亩举推荐使用迅困碧。
如果要准确可以声明的时候就把这3个变量声明成float型的吖。
因为a b是long 所以a/b这个表达式的结果一定是long型的,所以问题不在c上。要准物宴确,必须困蚂消汪知a b 是float 或者 double型的