HM010 单双精度

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\) 以 fF 结尾,输出 float,否则输出 double

输入格式

第一行一个整数 \(q\)(\(1 \le q \le 100\))。

接下来 \(q\) 行,每行一个询问。FD 后的实数绝对值不超过 \(10^{6}\)。E 中 \(a\) 为实数,\(b\) 为整数且 \(-6 \le b \le 6\)。NL 后的 \(s\) 不含空白,长度 \(1 \sim 30\)。

输出格式

每个询问输出一行。FDE 使用默认的 cout 格式;N 输出一个整数;L 输出 floatdouble

样例

输入 #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.14159N 只数数字字符,小数点和 ef 都不计入。不要输出类型所占字节数。

信息

ID
1009
难度
9
分类
(无)
标签
(无)
递交数
1
已通过
1
通过率
100%
上传者