既然认为有精度问题,为什么不用字符串做?
查看原帖
既然认为有精度问题,为什么不用字符串做?
1076872
wade7916楼主2025/6/14 17:04

rt。

#include <bits/stdc++.h>
using namespace std;
int main(){
    char s[20]; int k = 0;
    while (true){
    	char c = getchar();
    	if (c == '.' || c == EOF) break;
    	s[++k] = c;
    }
	s[++k] = '.';
	int cnt = 0;
	while (++cnt){
    	if (cnt == 3) break;
    	char c = getchar();
    	if (c == EOF) break;
    	s[++k] = c;
	}
    if (cnt < 3){
    	for (int i = 0; i <= 3 - cnt; i++) s[++k] = '0';
    } else {
    	char c = getchar(); 
    	if (c == -1){
     		s[++k] = '0'; return 0;
	 	} else {
    		char p = getchar();
    		if (p != -1) c += (p >= '5' ? 1 : 0);
        	s[++k] = c;
        }
    }
    int b = 1;
    for (int i = k; i >= 1; i--){
        if (s[i] == '.') continue;
        if (s[i] > '9'){
            s[i] = '0'; 
            if (s[i - 1] != '.') ++s[i - 1];
            else ++s[i - 2];
            if (i - 1 == 0 || i - 2 == 0) --b;
        }
        else break;
    }
    for (int i = b; i <= k; i++) putchar(s[i]);
}
// 我很菜,不保证代码完全写对了。
2025/6/14 17:04
加载中...