c语言怎么把double强制转换为int

如题所述

第1个回答  2022-10-20
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];

for(i=0;i<5;i++)

{

temp=(int)a;

b[i]=temp+'0';

a=(a-temp)*10;

printf("%.20f %d\n",a,(int)a);

}

b[5]='\0';

puts(b);

}你再运行一下看看

可以发现8.00000实际上是7.99999999999872812850 所以会是转为int的7

一般来说 要把浮点转为int 要取得最近似的值 都是采用(int)(a+0.5) 从而达到一种四舍五入的效果
2.c语言 double强制转换int
这都被你发现了 首先 float double这类的数据是近似值 有精度问题 这一点你知道吧 也就是说打印出来的8.0000 未必是8.00000 在你这个例子里面 我改了一下 改为打印出20位小数 #include 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("%.20f %d\n",a,(int)a); } b[5]='\0'; puts(b);}你再运行一下看看 可以发现8.00000实际上是7.99999999999872812850 所以会是转为int的7 一般来说 要把浮点转为int 要取得最近似的值 都是采用(int)(a+0.5) 从而达到一种四舍五入的效果。
3.C语言中double转成int的问题
因为无论是double还是int都是二进制储存,在二进制小数转换成十进制很容易出现误差导致问题,改成下面代码就看得出:

int main()

{

double a;

int b;

int c;

a=1234.56;

b=(int)a;

a=a-b;这里a=0.5599999999

c=(int)(a*100);55.99999999转换成int时,小数直接去掉,所以是55

return 0;

}
4.在C语言中Int和double怎么转换
1、打开vc软件,新建一个空白的vc项目文件:

2、编写转换程序,首先添加头文件,在main主函数中定义int类型变量sum,count,再定义double类型变量todouble,并进行强制类型转换,强制转换的格式就是括号加要转换的类型,最后使用printf打印结果:

3、编译运行程序,查看转换的结果。以上就是C语言中Int和double转换的操作步骤:
5.C++ double型强制转换为int型问题
#include<iostream.h>

#include<math.h>

int L=6;

int C=7;

int t(double a,int b)

{

double c=a/(int)pow(10,b);

double d=10*(c-int(c));

if(int(d)<1&&d>0)

return 1;

return int(d);

}

void main()

{

double a=211111;

cout<<t(a,1)<<t(a,2)<<t(a,3)<<t(a,4)<<t(a,5)<<t(a,6);

a = 211110;

cout<<t(a,1)<<t(a,2)<<t(a,3)<<t(a,4)<<t(a,5)<<t(a,6);

cout<<endl;

}<p>;这是精度问题,计算c=211111/(int)pow(10,1);的时候,c为得到21111.1,而是21111.0999999,于是下面d=10*(c-int(c));就相应得到了0.9999998,所以输出(int)d就成了0;

</p> <p>LZ可以看一下我的想法if(int(d)<1&&d>0);LZ可自行验证!</p> <p>;愿学习进步哦,亲!</p>
6.C++ double型强制转换为int型问题
#include #include int L=6;int C=7;int t(double a,int b){ double c=a/(int)pow(10,b); double d=10*(c-int(c)); if(int(d)<1&&d>0) return 1; return int(d);}void main(){ double a=211111; cout< 0);LZ可自行验证! 愿学习进步哦,亲!。

c语言如何将double转换为int
在C语言中,可以使用强制类型转换将double类型转换为int类型。强制类型转换的语法如下:int i = (int) d;其中,d是double类型的变量,(int)是强制类型转换符,将d的值转换为int类型,并将结果赋值给变量i。请注意,强制类型转换会将double类型的小数部分截断,只保留整数部分。如果double类型的值超出了...

C语言用DOUBLE输出的是双精度,怎样把它转成整型-_-?
强制类型转换,语法是:(希望的转换后的类型) var \/\/ 比如将double的变量var转换为int, (int)var 前面的转换只会保留小数点前面的值,如果需要实现“四舍五入”,你要自己处理一下。

C语言的浮点型怎么转换为整型?
在C语言的世界里,将浮点型转换为整型有两招:强制类型转换和自动类型转换。首先,强制转换就像一把钥匙,通过(类型说明符)(表达式)的形式,直接将浮点数的值转变成所需的整型。比如,(double) a 就是将a转换为双精度浮点,(int)(x+y) 则将两个数相加后的结果强制变为整型。其次,自动类型转换...

在C语言中Int和double怎么转换?
1、打开vc软件,新建一个空白的vc项目文件:2、编写转换程序,首先添加头文件,在main主函数中定义int类型变量sum,count,再定义double类型变量todouble,并进行强制类型转换,强制转换的格式就是括号加要转换的类型,最后使用printf打印结果:3、编译运行程序,查看转换的结果。以上就是C语言中Int和double...

c语言的关于 : 对一个double型数据进行四舍五入运算
1 将double类型数据,强制转换为int类型,会强制截取整数部分。比如double a = 1.23;(int)a的值就是1。2 由于是强制取整,所以即使是1.9转为int后,同样是1,这与四舍五入的要求不符。所以可以转换一下算法,做(int)(a+0.5)就可以实现四舍五入到整数的效果了。3 要实现四舍五入到某一位...

c语言中浮点型转换为整型可以用哪些方法?
C语言中,浮点型转换为整型可以用:强制类型转换、自动类型转换,例如:(int)3.14、int a = 3.14。1、强制类型转换 强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式),其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (double) a 把a转换为双...

在C语言里如何用四舍五入把float变为int
加与变量同符号的0.5,再强制取整就可以了。如下面的举例代码:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"int main(void){ double x=3.1415926,y=1.507,z=0.499999; printf("%d %d %d\\n",int(x+(x>0?.5:-.5)),int(y+(y>0?.5:-...

c语言中为什么double类型可以转换成int?
我这么跟你解释:这个涉及到C语言中强制类型转换的知识。在C语言中,将一个double类型的数据强转成int类型时,将会丢弃该数据的小数部分,而只保留它的整数部分,因此(int)a = 5;对于b\/b,因为b是double类型,所以它们的商也是一个double类型,为2.5\/2.5 = 1.0(注意要在小数位上加一个0);...

C语言中怎样把浮点数转化为整数?
需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:double a = 2.71828;printf("%d", int(a));。3、编译器运行test.cpp文件,此时成功将浮点数2.71828转换为了整数2。

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]; for(i=0;i<5;i++) { ...

相似回答
大家正在搜