Test Message

d561: 被秒殺的四捨五入

內容

拿氣溫來說,攝氏 15 度和攝氏 15.05 度的差距對人來說差異實在不大,有了數學概數的觀念,我們可以透過四捨五入法來得到一個數字的估計值,進而方便統計。
現在請你將一些小數利用程式來四捨五入。


輸入

共計三個測資點,每個測資檔中有多行小數 n(-1<=n<=1),至多小數點以下有 100 位數

1.00000
0.5
0.715
0.1234567890
-0.995

輸出

請輸出四捨五入至小數點以下第二位的結果

1.00
0.50
0.72
0.12
-1.00


解題思路

簡單的字串處理,注意當測資小於 -0.005 時要輸出 0.000 而不是 -0.00。


完整程式碼

AC (2ms, 108KB)
#include <stdio.h>

char buffer[110], * num;

int main()
{
while (scanf(" %s", buffer) == 1)
{
num = buffer[0] == '-' ? buffer + 1 : buffer;
if (num[3] == '\0')
num[3] = '0', num[4] = '\0';
else if (num[4] >= '5')
num[3]++;
for (int i = 3; ~i; i--)
{
if (num[i] > '9')
{
if (num[i - 1] == '.') num[i - 2]++;
else num[i - 1]++;
num[i] = '0';
}
else break;
}
num[4] = '\0';
puts((num[0] == '0' && num[2] == '0' && num[3] == '0') ? "0.00" : buffer);
}
return 0;
}