HM010 单双精度
HM010 单双精度
来源: 第 10 集 数据类型-实型
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
程序里要写小数,就要用实型(也叫浮点型)。C++ 里有两种:
float称为单精度,有效数字大约 \(7\) 位。double称为双精度,有效数字大约 \(15\sim 16\) 位。
有效数字要连小数点前面的整数部分一起数。例如 3.14 有 \(3\) 位有效数字(\(3\)、\(1\)、\(4\))。双精度能统计得更准。
字面量在默认情况下会被当成 double。若希望它本身就是 float,应在数字后面加 f(或 F),避免多一次从双精度转到单精度的转换。
用 cout 直接输出小数时,默认只显示 6 位有效数字(不是固定 6 位小数)。想看更多位需要额外设置,本题不做。
科学计数法也可以表示小数,一般较少手写,但要能看懂:aEb 表示
- \(b \ge 0\):\(a \times 10^{b}\),例如
3e2是 \(3 \times 10^{2} = 300\); - \(b < 0\):\(a \times (0.1)^{-b}\),例如
3e-2是 \(3 \times (0.1)^{2} = 0.03\)。
处理下列询问:
F x:把 \(x\) 存进float,用默认的cout输出一行。D x:把 \(x\) 存进double,用默认的cout输出一行。E a b:按上面的科学计数规则计算,结果用double默认输出一行。N s:统计字符串 \(s\) 里数字字符的个数,即题面约定的有效数字位数。L s:若 \(s\) 以f或F结尾,输出float,否则输出double。
输入格式
第一行一个整数 \(q\)(\(1 \le q \le 100\))。
接下来 \(q\) 行,每行一个询问。F、D 后的实数绝对值不超过 \(10^{6}\)。E 中 \(a\) 为实数,\(b\) 为整数且 \(-6 \le b \le 6\)。N、L 后的 \(s\) 不含空白,长度 \(1 \sim 30\)。
输出格式
每个询问输出一行。F、D、E 使用默认的 cout 格式;N 输出一个整数;L 输出 float 或 double。
样例
输入 #1
6
F 3.14
D 3.1415926
E 3 2
E 3 -2
N 3.14
L 3.14f
输出 #1
3.14
3.14159
300
0.03
3
float
输入 #2
3
L 3.14
N 3.1415926
D 2.5e2
输出 #2
double
8
250
说明
默认有效数字为 6 位,所以 3.1415926 会显示成 3.14159。N 只数数字字符,小数点和 e、f 都不计入。不要输出类型所占字节数。
信息
- ID
- 1009
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 通过率
- 100%
- 上传者