[小白总结做题经验] qaq 四舍五入1.0 2021/10/26

本文探讨如何在编程中精确计算圆周长、面积等立体几何量,解决四舍五入问题,分享手动进位方法和C++内建技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

立体几何

设圆半径r,圆柱高h 求圆周长C1、圆面积Sa、圆球表面积Sb、圆球体积Va、圆柱体积Vb。 用cin输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字(四舍五入)。请编程序。 PI=3.14 

输入

两个浮点数,r和h 
 

输出

圆周长C1、圆面积Sa、圆球表面积Sb、圆球体积Va、圆柱体积Vb。 保留两位小数,每个结果后换行。 

第一次伟大尝试:

 #include<stdio.h>
#define PI 3.14
int main()
{
    double r, h, C1, Sa, Sb, Va, Vb;
    scanf("%lf %lf", &r, &h);
    printf("C1=%.2f\n", 2 * PI*r);
    printf("Sa=%.2f\n", PI*r*r);
    printf("Sb=%.2f\n", 4 * PI*r*r);
    printf("Va=%.2f\n", 4 * PI*r*r*r / 3);
    printf("Vb=%.2f", PI*r*r*h);
    return 0;
}

很可惜,第一个测试点都没过

输出

C1=9.42
Sa=7.06
Sb=28.26
Va=14.13
Vb=21.20

答案

C1=9.42
Sa=7.07
Sb=28.26
Va=14.13
Vb=21.20

看着这个7.06和7.07真是令人伤心,我打开了小学二年级的课本,对四舍五入有了进一步的理解:

四舍五入,顾名思义,四舍五入,(哈哈哈哈哈,开个玩笑

具体要求为:四不进位,而五要进位,那遇到计算机这种不懂事不会自己进位的情况,我们要怎么办呢?

手动进位!!!下面上操作:

当我们要求x保留两位小数的时候(C一般用.2f处理,C++一般要用到#include<iomanip>库里的函数或者cout自带的函数,啊,这些我们都不用),先将x*1000b把x小数后三位作为整数的后三位保留出来,然后了,让x+5,这样如果x原本的最后一位达到了5以上,那么很自觉的,x的倒数第二位就可以得到进位来的1,也就达到了进位的效果。

cin >> r >> h;//保留两位小数
    double R = r * PI*r * 1000;
    R += 5;
    cout << R / 1000;

这样就解决了!

留下疑问:

在我向一位学长询问后,学长告诉我还有这么一种方法,通过简单的*100/100.0就可以做到这一点,这一部分可能涉及到编译器自己内部的操作处理,我还不太理解,就不给大家放出来了。

(本文只是自己在做题的时候感觉比较有用的方法或者思想,有很多东西搞得也不是特别懂,若有不妥的地方,烦请指正。)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值