在C语言中,如何将一个浮点数变换成整数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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。

参考技术A

在C语言中,将一个浮点数变换成整数的示例:

main()

float f=5.75;

printf("f=%d,f=%f\\n",(int)f,f);

执行程序,输出结果为f=5,f=5.750000。 f=5即为由浮点数转化出的整数。

上述示例中f虽强制转为int型,但只在运算中起作用, 是临时的,而f本身的类型并不改变。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。


扩展资料

C语言中赋值中的类型转换规则

当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:

(1) 浮点型与整型

将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。

(2) 单、双精度浮点型

由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。

(3) char型与int型

int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。

char型数值赋给int型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。

对于使用者来讲,如果原来char型数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。

参考技术B c语言提供了强制类型转换运算符,可以强制将一个表达式的值转换成所需类型。
例如:(double)a 可以把a强制转换成double型的。
还有一种数据类型转换是系统自动的。参考相关书籍即可。例如将一个实型的数据赋给整型的变量时。系统自动把实数的整数部分赋给整型变量。
参考技术C 强制类型转换运算 比如
float a=3.5;
int c;
c=(int)a;本回答被提问者采纳
参考技术D 直接进行强转啊
double c = 1.2;
int a = int(c);不就可以了吗

C语言中如何对浮点数进行四舍五入?

据说%.3f是可以,但我自己测试时不行......
如果不行的话,请问一般怎么做???

C语言中对于浮点数输出的四舍五入是自动进行的。在浮点数的有效位数范围内,当要求保留小数点后n位时,系统会自动根据第n+1的值自动进行四舍五入操作。以下代码可以验证:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void)
    double pi=3.141592653589793;
    printf("%.15f\\n",pi);
    printf("%.3f\\n",pi);//保留3位小数,因第4位是5而进位
    printf("%.5f\\n",pi);//保留5位小数,因第6位是2而舍弃
    return 0;

输出是:

3.141592653589793

3.142

3.14159

参考技术A %.nf,其中n是字面常量,功能是输到小数点后面的第n位,第n + 1位“四舍五入”。下面是在VC++ 6.0环境下的测试结果。
/*
0.234562
0.235
0.2346
0.23456
Press any key to continue
*/
#include <stdio.h>
int main()
float f = 0.2345623f;
printf("%f\n",f);
printf("%.3f\n",f);
printf("%.4f\n",f);
printf("%.5f\n",f);
return 0;本回答被提问者采纳
参考技术B %.3f 的意思是输入小数点之前的三位数,比如说: 12.1234 会输出:12.123,

0.1236会输出:0.123 。之后的数字会被直接无语!
你可以用下面的方法(不过这个方法只适合正数,负数就不行了)
float a = 1.1235; //保留到小数点后三位
float b =(int)((a * 1000) + 0.5) / 1000.0;
//output b = 1.124;追问

 

好奇怪,这次又可以了,上次是输出2个2.34。。。。

参考技术C 加个0.5再取整数,如:1.4 0.5取整1;1.5 0.5取整2。

以上是关于在C语言中,如何将一个浮点数变换成整数?的主要内容,如果未能解决你的问题,请参考以下文章

C语言,一个浮点数,怎么四舍五入保留到个位数

c语言中如何将10进制的浮点数转化为16进制数

C语言如何实现输出浮点数小数点两位(四舍五入法),但若小数点最后位为零则舍去??

如何判断C语言的一个浮点数是否整数?

寻求一个C语言程序,输入一个浮点数num及一个整数m,输出浮点数位数。如m=0,输出个位;m=1,输出十位。

C 语言 哪个函数可以把 浮点数转换成字符串 带小数点 怎么做