题解 | #取近似值#
取近似值
https://www.nowcoder.com/practice/3ab09737afb645cc82c35d56a5ce802a
#include <iostream> #include <cmath> using namespace std; int main() { float a; cin>>a; //todo 保证在32 位浮点数范围内不知道怎么写 [1] int a0=floor(a); float a1=a-a0; if(a1<0.5) cout<<a0<<endl; else cout<<a0+1<<endl; return 0; } // 64 位输出请用 printf("%lld")
更简单的方法:
#include <iostream> using namespace std; int main() { float x; cin >> x; // 计算整数部分 int ans = static_cast<int>(x); // 判断并调整结果 if (x - ans >= 0.5) { ++ans; } // 输出结果 cout << ans << endl; return 0; }
- 32位浮点数 (
float
): 存储大小为32位,精度约为7到8位有效数字,适合内存受限且不需要极高精度的应用。 - 64位浮点数 (
double
): 存储大小为64位,精度约为15到16位有效数字,适合需要更高精度和更大范围的应用。 - 题目要求: 输入数据在32位浮点数范围内,因此使用
float
是合适的。
[1] 如果你已经将 x
定义为 float
类型,并且题目保证输入的数字在32位浮点数范围内,那么通常不需要额外检查输入是否在32位浮点数范围内。这是因为:
- 类型匹配: 既然
x
已经是float
类型,任何输入都会自动转换为float
类型。 - 题目保证: 题目明确说明输入数据在32位浮点数范围内,因此不会有超出范围的情况。