代码错误或?在C.

时间:2015-11-04 20:42:08

标签: c

我写了这段代码:

float suma;
int centy;
int cele;
printf("Zadaj sumu a ja ti ju napisem a zaroven aj vysklonujem:\n");
scanf("%f",&suma);
cele=(int)suma;
centy= (suma-cele)*100;

switch ((int)suma) {
    case 1:
        printf("%d euro",(int)suma);
        break;
    case 2 ... 4:
        printf("%d eura",(int)suma);
        break;

    default:
        printf("%d eur",(int)suma);
        break;

}
switch (centy) {
    case 1:
        printf(" a %d cent\n",centy);
        break;
    case 2 ... 4:
        printf(" a %d centy\n",centy);
        break;

    default:
        printf(" a %d centov\n",centy);
        break;
}

但是当我键入5.56时,它会说我在控制台中键入了5.55。你怎么看。我应该改变什么?我是新手所以...

1 个答案:

答案 0 :(得分:1)

使用浮点数时,您必须更正舍入错误。一种常用的简单方法是在转换为int之前添加0.5。所以,这样的事情应该会更好:

centy= (int) (0.5 + suma * 100.0) - cele * 100;

将输入作为字符串读取并使用“。”将其解析为欧元和美分可能更好。作为分隔符。但这将使代码轻松工作。当你不需要精确的精确度时,通常可以添加0.5,但足够接近就可以了。