一般有两种方法,以变量a = 2.55为例说明
1.将a(2.55)放大10倍得到b(25.5),+0.5得到c(26.0),然后除以10得到d(2.60)。
2.将a(2.55)放大100倍得到b(255),对10取余得到c(5),如果大于等于5,b+1,;如果小于5,b保持原样,最后b除以100,得到d(2.60)。
这里只讨论第一种。
直接贴出代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float source_number = 3.55f;
float target_numer = 0;
int exchange_numer = 0; //中间转接数值
//将放大倍数和强制类型转换为int分开操作
target_numer = source_number * 10 + 0.5; //放大十倍,然后+0.5
exchange_numer = (int)target_numer; //强制转换为int类型,取整部分,完成四舍五入
target_numer = (float)exchange_numer / 10; //强制转换为float类型,然后除以10
printf("target_numer = %f\r\n", target_numer);
//将放大倍数和强制类型转换为int一起操作
exchange_numer = (int)(source_number *