#include <stdio.h>
int main ()
{
int temp,i;
double a=2.4568;
unsigned char b[5];
for(i=0;i<5;i++)
{
temp=(int)a;
b[i]=temp+'0';
a=(a-temp)*10;
printf("%f %d\n",a,(int)a);
}
b[5]='\0';
puts(b);
}
运行结果:
4.568000 4
5.680000 5
6.800000 6
8.000000 7
10.000000 9
24567
--------------------------------
Process exited with return value 0
Press any key to continue . . .
为什么最后的8.00000和10.00000被强制转换成7和9而不是8和10;
è¿é½è¢«ä½ åç°äº
é¦å float doubleè¿ç±»çæ°æ®æ¯è¿ä¼¼å¼ æ精度é®é¢ è¿ä¸ç¹ä½ ç¥éå§
ä¹å°±æ¯è¯´æå°åºæ¥ç8.0000 æªå¿ æ¯8.00000
å¨ä½ è¿ä¸ªä¾åéé¢
ææ¹äºä¸ä¸ æ¹ä¸ºæå°åº20ä½å°æ°
#include <stdio.h>ä½ åè¿è¡ä¸ä¸çç
å¯ä»¥åç°8.00000å®é ä¸æ¯7.99999999999872812850 æ以ä¼æ¯è½¬ä¸ºintç7
ä¸è¬æ¥è¯´ è¦ææµ®ç¹è½¬ä¸ºint è¦åå¾æè¿ä¼¼çå¼ é½æ¯éç¨(int)(a+0.5) ä»èè¾¾å°ä¸ç§åèäºå ¥çææ
c语言如何将double转换为int
在C语言中,可以使用强制类型转换将double类型转换为int类型。强制类型转换的语法如下:int i = (int) d;其中,d是double类型的变量,(int)是强制类型转换符,将d的值转换为int类型,并将结果赋值给变量i。请注意,强制类型转换会将double类型的小数部分截断,只保留整数部分。如果double类型的值超出了...
c语言中为什么double类型可以转换成int?
这个涉及到C语言中强制类型转换的知识。在C语言中,将一个double类型的数据强转成int类型时,将会丢弃该数据的小数部分,而只保留它的整数部分,因此(int)a = 5;对于b\/b,因为b是double类型,所以它们的商也是一个double类型,为2.5\/2.5 = 1.0(注意要在小数位上加一个0);最后计算5 + 1.0...
C语言数据类型的自动转换和强制转换有什么区别
C语言数据类型转换分自动转换和强制转换两类。自动转换 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成l...
C语言用DOUBLE输出的是双精度,怎样把它转成整型-_-?
强制类型转换,语法是:(希望的转换后的类型) var \/\/ 比如将double的变量var转换为int, (int)var 前面的转换只会保留小数点前面的值,如果需要实现“四舍五入”,你要自己处理一下。
c语言怎么把double强制转换为int
1.c语言 double强制转换int 这都被你发现了 首先 float double这类的数据是近似值 有精度问题 这一点你知道吧 也就是说打印出来的8.0000 未必是8.00000 在你这个例子里面 我改了一下 改为打印出20位小数 include <stdio.h> int main (){ int temp,i;double a=2.4568;unsigned char b[5]...
c语言的关于 : 对一个double型数据进行四舍五入运算
1 将double类型数据,强制转换为int类型,会强制截取整数部分。比如double a = 1.23;(int)a的值就是1。2 由于是强制取整,所以即使是1.9转为int后,同样是1,这与四舍五入的要求不符。所以可以转换一下算法,做(int)(a+0.5)就可以实现四舍五入到整数的效果了。3 要实现四舍五入到某一位...
在C语言中Int和double怎么转换?
1、打开vc软件,新建一个空白的vc项目文件:2、编写转换程序,首先添加头文件,在main主函数中定义int类型变量sum,count,再定义double类型变量todouble,并进行强制类型转换,强制转换的格式就是括号加要转换的类型,最后使用printf打印结果:3、编译运行程序,查看转换的结果。以上就是C语言中Int和double...
c语言中浮点型转换为整型可以用哪些方法?
C语言中,浮点型转换为整型可以用:强制类型转换、自动类型转换,例如:(int)3.14、int a = 3.14。1、强制类型转换 强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式),其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (double) a 把a转换为双...
C语言中double转int,为什么会出错?
double这个类型很多陷阱的;因为它那个小数末尾的无效数字是随机的;但double类型强制转换成int采取的是四舍五入,所以应该不会出错的啊;不麻烦楼主把题SHOW出来大家讨论一下。选B;(当然,我还没有看明白你的题目的前部分“若各变量以正确赋值”,呵呵,但希望我的解析对你有帮助)A. a=a+b=b++...
C++中的常量的强制转换如何使用,举一个简单的例子。
在C语言里强制类型转换的方法非常简单,只要在要转换的变量前用括号确定要转换的类型即可,如要将一个double型的变量强制转换为int类型,代码如下:double x = 3.14; int y = (int)x;另外,还可有更高级的转换,如把int *类型的变量转换为int ,代码如下:int x = 20; int *p = &x;...