我用了向下取整函数为什么会出现这种情况。(语言-c++)

您请看第八行格式化输出最后的部分,我发现无论是floor(t-t/60)还是floor(t%60)还是其他形式,输出的分钟数始终是“00”,为什么会这样呢?我可以给您提供两个数s=100, v等于99,您往里带试试,咱就从数学的角度上,这也是不可能的呀。这究竟是怎么回事?请解答。

img

ceil的返回值是double类型的要用%f格式输出,你也可以定义一个整型变量,比如说j,然后用j接收ceil的返回值,这时就有一个隐式类型转换,然后就可以用%d来输出


#include <bits/stdc++.h>
using namespace std;
int main()
{
    double a,c;
    cin>>a;
    c=ceil(a);
    printf("%02.f",c);  //运行结果02
}

ceil 函数返回值为double,double类型占用8个字节,printf变长函数机制会先给后面的%02d分配4个字节,剩下的4个字节给了前面的%02d,事实上07:00都是参数ceil(t%60)的。建议使用(int)(ceil(t%60))