由第九位小数能否保留判断 a 为 double、b 为 float。
OJ: noi_openjudge
题目 ID: ch0102-05
难度:入门
标签:浮点数类型转换python
日期: 2026-07-30 23:01
题意
根据赋值前后 1.000000001 的第九位小数是否还存在,判断两个 C/C++ 变量的类型。
思路
a 输出时仍保留 1.000000001,需要双精度 double,对应选项 F。赋值给 b 后输出为 1.000000000,说明单精度 float 的有效精度不足以区分这一微小差异,故 b 对应 E。
Python 的 float 通常就是双精度,不能用它直接演示 C++ 单精度丢失;本题要求的是类型选项,直接输出 F E。
代码
Python代码
python
# a 保留第 9 位小数需要 double,b 转成 float 后该位丢失。
print("F E")C++代码
这里保留原有的 C++ 参考实现。
cpp
/*
* short 2
* 16bit
* 0111111111111111
* 32768
* 1000000000000000
* */
#include <bits/stdc++.h>
using namespace std;
int main(){
printf("F E");
return 0;
}复杂度
时间复杂度和额外空间复杂度均为
总结
浮点赋值可能因精度不同而改变值。观察变化发生在赋值前还是赋值后,可以反推出两个变量的精度。