c float 到 int 的转换表现得很奇怪

c float to int conversion acting weird

我正在尝试将浮点值转换为 C 中的整数。我正在使用打印语句来查看发生了什么,并确保我得到了想要的结果,但有些东西无法正常工作。这是我的代码:

#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 的结果,但我没有得到这个奇怪的结果,也无法弄清楚逻辑它的。

以防你还不明白...

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

如果您想看到小数点“49”,请使用 printf("%d") 而不是“%o”。

这里有一份很好的 "printf" 格式选项列表:

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