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