问题描述 |
---|
罗少写了这样一段代码: double a; cin >> a; cout << a; 紧接着他输入(input)了几个数字,并得到了以下输出(output): input: 01010 output: 1010 input: 1023.000001020 output: 1023 input: 0456.78900 output: 456.789 input: 0000.1000 output: 0.1 input: 998244353 output: 9.98244e+008 input: .18057 output: 0.18057 罗少发现,$$double$$类型的数据在输出时,没有意义的$$0$$都被忽略了,小数点前遗漏的的$$0$$也会补上。 不仅如此,罗少还发现当输入的数字位数较长时,这段代码似乎不能精确地输出结果,查阅相关资料后罗少得知: 默认情况下,cout 只输出 6 位有效数字(这 6 位包括小数点前的数字,小数点后最后一位会四舍五入),于是罗少又来了一组输入想验证一下 input: 12.3456789 output: 12.3457 果然没错!但是对于一个追求完美的人来说,这样的结果显然是罗少不能接受的。 他想发明一种新的数据类型$$luo\ double$$,默认输出$$1024$$位有效数字,其他和$$double$$是一样的。 |
输入描述 |
第一行是一个正整数$$T$$表示测试案例的数量。($$1 \leq T \leq 100$$) 每组案例包含一个可能无法用$$double$$进行精确存储的实数$$n$$,并保证: ● $$n$$的长度在$$1-100$$之间且只可能是整数或小数。 ● 如果$$n$$是整数,那么$$n$$的每一位均由$$0-9$$构成。 ● 如果$$n$$是小数,那么它一定可以表示成 |
输出描述 |
针对每组案例,输出一个数字表示你的答案。 |
样例输入复制样例 |
7 01010 1023.000001020 0456.78900 0000.1000 998244353 .18057 12.3456789 |
样例输出 |
1010 1023.00000102 456.789 0.1 998244353 0.18057 12.3456789 |
提示说明 |
$$luo\ double$$默认输出$$1024$$位有效数字,而给定的$$n$$最长只有$$100$$位,所以一定不会发生四舍五入。 因此你可以用上面提供的代码来测试$$double$$有效位数以内的数据,其输出的答案应该与你的代码一致。 换言之,本题似乎只需要你找到一个与输入数字$$n$$相等的最简数字,其输出格式应符合数学中的表达。 |
相关 |