请问大佬,n的求法是有啥问题吗,改为x*10后处理就过了

P5705 【深基2.例7】数字反转

0___o @ 2023-06-16 21:20:45

#include<iostream>
#include<stdio.h>
int main()
{
    y=x/100;z=x/10-y*10;b=x/1-y*100-z*10;
    n=x/0.1-y*1000-z*100-b*10;
    printf("%d",n);
    printf(".");
    printf("%d%d%d",b,z,y);
    return 0;
} 

by CheZiHe929 @ 2023-06-16 21:23:58

没必要这么麻烦,因为除了 . 之外只有 4 个数,所以直接倒着输出就行了:

#include<cstdio>
using namespace std;
int main(){
    char a,b,c,d;
    scanf("%c%c%c.%c",&a,&b,&c,&d);
    printf("%c.%c%c%c",d,c,b,a);
    return 0;
}

by Terrible @ 2023-06-16 21:28:54

emmm,可能 /0.1*10 误差更大吧,因为浮点数记录的也是二进制数,0.1 无法被精确地表为二进制,因而他的误差会很大。


by fish_love_cat @ 2023-06-16 21:36:29

@CheZiHe929 字符串更简单()


by CheZiHe929 @ 2023-06-16 21:38:49

@fish_love_cat 的确,但你让刚入门的OIer用字符串未免难为人家了吧()。


by CheZiHe929 @ 2023-06-16 21:39:42

@fish_love_cat 不过有可能人家是巨佬()


|