如何在 if 语句中正确使用 0.0

问题描述 投票:0回答:1
int main () {
    float hour, dec, Dec_Only, min2, sec;
    int res, r, min, whole, min3, sec2, sec3;
    
    printf ("Enter hours: ");
    scanf ("%f", &hour);
    
    //Displaying initial minutes
    min = hour * 60;
    printf ("%d minutes\n", min);

    if (hour == 0.0){
        res = min / 60;
        r = min % 60;
    
        printf("%02d : %02d : 00", res, r);
    }
    else {
        //Getting hours
        whole = (int)hour;
        dec = (hour - whole) * 100;
    
        //Getting minutes
        Dec_Only = hour - whole;
        min2 = Dec_Only * 60;
        min3 = (int)min2;
        
        //Getting seconds
        sec = min2 - min3;
        sec2 = sec * 60;
        sec3 = (int)sec2;
    
        printf ("%02d : %02d : %02d", whole, min3, sec3 );
    }
    
    return 0;
}

你好,我是 C 语言新手。我的工作是将时间转换为数字时钟(其中需要使用条件语句)。 当 user_input 仅包含 1 位或更多小数时,我添加了条件语句。我的代码可以工作,但是,当我输入特定数字 5.2 时,问题就出现了。

输入时间(user_input):5.2 输出:05:11:59

我想要的输出:05:12:00

PS:当我输入任何其他数字时它会起作用。

c if-statement
1个回答
0
投票

关键问题是输入

"5.2"
会得到
float
near,但不完全是 5.2。这是因为
float
被编码为有限整数乘以 2 的幂。

不要使用

min = hour * 60
(将 截断的值分配给
min
),而是使用
min = lroundf(hour * 60);
(来自
<math.h>
)将
float
乘积四舍五入到最接近的
long

© www.soinside.com 2019 - 2024. All rights reserved.