noi1001: 温度转换
知识点: 涉及到一元方程式的转换, 以及浮点数保留位数的输出
题目描述
将输入的华氏温度转换为摄氏温度。由华氏温度F与摄氏温度C的转换公式为:F=C×9/5+32。
输入
输出
样例输入
样例输出
10.0000
参考代码:
#include <iostream>#include <cstdio>#include <iomanip> // 为了cout 输出控制小数位数using namespace std;int main() {/*double F, C; cin >> F;C = (F-32)*5/9;printf("%.4f, C);*/double F; cin >> F;printf("%.4f\n, (F-32)*5/9); // cout << fixed << setprecision(4) << (F-32)*5/9 << endl;return 0;}
说明及参考:
C 语言中 printf () 函数可以非常方便控制保留 几位小数输出,在 C++ 当中也是可以控制小数保留,cout () 和 printf () 还是有一些区别。
需要头文件#include
- setprecision()来用来保存有效数字,fixed和setprecision()一起用就变成保存小数点后有效数字。
- fixed 可以通过 cout.unsetf(ios::fixed); 这段代码关掉。不然会一直开着。
- fixed有个地方需要注意的是可以保存的有效数字包括0,不开fixed的话,即使保存3个有效数字,小数点后的0也会自动省略。即 1.2 要是setprecision(3) 结果还是1.2 而不是1.20. 所以通常想要像在printf()中一样使用,都是要开fixed的!
下面是测试代码,自己打一遍过一下,就更熟悉了。
#include <iostream>#include <iomanip>using namespace std;int main() {double p = 12.0;cout << setprecision(3) << p << endl;cout << fixed << setprecision(3) << p << endl;cout << setprecision(3) << p << endl;cout.unsetf(ios::fixed);cout << setprecision(3) << p << endl;cout << setprecision(1) << p << endl;cout.setf(ios::fixed);cout << setprecision(3) << p << endl;return 0;}
输出:
练习:
尝试用 cout 的输出方式控制小数位数完成此题.
