“四舍六入五成双规则” 与 C语言如何实现“四舍五入”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了“四舍六入五成双规则” 与 C语言如何实现“四舍五入”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2108字,纯文字阅读大概需要4分钟。
内容图文
![“四舍六入五成双规则” 与 C语言如何实现“四舍五入”](/upload/InfoBanner/zyjiaocheng/1010/ff2c4eccb5c045e9969ba8eba79a8414.jpg)
1、四舍六入五成双规则
对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是“四舍六入五成双”,也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有有效数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为 奇数,舍5入1;②5前为偶数,舍5不进。(0是 偶数)
测试1代码:
void test_1(void)
{
/*
四舍六入五成双规则:
对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,
这种修约(舍入)规则是“四舍六入五成双”,也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,
"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有有效数时,舍5入1;当5后无有效数字
时,需要分两种情况来讲:①5前为 奇数,舍5入1;②5前为偶数,舍5不进。(0是 偶数)
下面举例,用上述规则对下列数据保留3位有效数字:
*/
float aa_1 = 9.8249; // 9.82
float aa_2 = 9.82671; // 9.83
float bb_1 = 9.8250; // 9.82
float bb_2 = 9.8350; // 9.84
float cc_1 = 9.8351; // 9.84
float cc_2 = 9.82501; // 9.83
printf("%.2f\n", aa_1);
printf("%.2f\n", aa_2);
printf("%.2f\n", bb_1);
printf("%.2f\n", bb_2);
printf("%.2f\n", cc_1);
printf("%.2f\n", cc_2);
}
测试1结果:
2、C语言实现“四舍五入”
2.1、使用round(x)函数返回x的四舍五入整数值
测试2代码:
void test_2(void)
{
float a = 23.456789;
float b = 23.56789;
int y;
//scanf_s("%f", &x);
y = round(a);
printf("%d\n", y);
y = round(b);
printf("%d\n", y);
}
测试2结果:
2.2、我们知道,C语言中去除小数位采用的方法就是强制性转化成整型类型。那么假如我们要对一个小数保留三个小数位而第四个小数位按照四舍五入的规则进行,
该怎样实现呢?很简单,我们将数字扩大1000倍,使得第四位小数称为新数字的第一位,然后我们可以给它加上0.5后再进行强制性转化。加0.5的原因就是:
假如这个小数位的数值大于5,加上0.5能够实现进位的作用,倘若小于0.5,就没有实现进位的作用。如此,就能实现小数位的四舍五入。然后我们再对这个数值
进行强制性转化,然后再处以1000.0(记住,一定要1000.0,否则就会出现隐式转化),在输出的时候用%0.3f以实现保留三位小数。
测试3代码:
//对一个小数保留三个小数位
int test_3(void) {
float a = 12.345678;
//scanf_s("%f", &a);
a = (int)(a * 1000 + 0.5) / 1000.0;
printf("%0.3f\n", a);
return 0;
}
测试3结果:
内容总结
以上是互联网集市为您收集整理的“四舍六入五成双规则” 与 C语言如何实现“四舍五入”全部内容,希望文章能够帮你解决“四舍六入五成双规则” 与 C语言如何实现“四舍五入”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。