c浮动到int转换行为很奇怪

时间:2015-08-09 20:15:58

标签: c casting cs50 floating-point-conversion

我试图将浮动值转换为C中的int。我使用print语句来查看发生了什么并确保我获得了所需的结果,但是某些东西不能正常工作。这是我的代码:

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main(void){

float changeOwed = -1.00;

while(changeOwed < 0.00){
    printf("How much change is owed?\n");
    changeOwed = GetFloat();
    }

printf("%f\n", changeOwed);

int centsOwed = roundf(changeOwed*100);
printf("%o\n", centsOwed);

如果用户输入是,假设为0.49,这是输出:

0.490000
61

我不明白为什么演员结果是61.我认为正常的错误是0,48或50的结果,但我不会得到这个奇怪的结果而且不能弄清楚它的逻辑。

1 个答案:

答案 0 :(得分:3)

如果你还没有得到它......

“061”是“49”的八进制。

如果要查看小数“49”,请使用printf(“%d”)代替“%o”。

以下是“printf”格式选项的良好列表:

http://www.cplusplus.com/reference/cstdio/printf/