Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中是否有一个函数可以取变量的最大整数值?_C - Fatal编程技术网

C语言中是否有一个函数可以取变量的最大整数值?

C语言中是否有一个函数可以取变量的最大整数值?,c,C,我制作了一个程序,可以得到浮点值的最大积分: #include <stdio.h> float get_value(float a); int main() { float num = 4.58; float new_val = get_value(num); printf("%f \n", new_val); } float get_value(float a) { int c = a; for (int i = 0

我制作了一个程序,可以得到浮点值的最大积分:

#include <stdio.h>

float get_value(float a);

int main() {
    float num = 4.58;
    float new_val = get_value(num);
    printf("%f \n", new_val);
}

float get_value(float a) {
    int c = a;
    for (int i = 0; i < 99; i++) {
        a -= 0.01;
        if (a == c) {
            break;
        }
    }
    return a;
}
#包括
浮点获取_值(浮点a);
int main(){
浮点数=4.58;
浮动新值=获取新值(num);
printf(“%f\n”,新值);
}
浮点获取_值(浮点a){
int c=a;
对于(int i=0;i<99;i++){
a-=0.01;
如果(a==c){
打破
}
}
返回a;
}
它没有按照我想要的方式工作,所以我想要它的简写,而不是生成一个函数

因此,有没有一个函数可以用于此操作?

如果希望最小整数(最接近负无穷大)不超过浮点值,请使用
floor()
。或者使用
trunc()
获取不超过fp值大小的最小整数(最接近零)


另外,请注意.1在二进制fp中有一个重复表示,因此编写的函数总是会有问题。就像1/3变成十进制的.3333一样。

您可以使用
modf

double integral, fractional;
double num = 4.58;
int result;

fractional = modf(num, &integral);
result = (int)integral;

结果是04。我用的是C99。这不是你认为应该的工作方式,因为好吧,我想这是有道理的@这就是我需要的功能。
floor()
给了我4.00,这是我正在寻找的结果,
trunc()
给了我同样的结果。@IPlayGamesBro你想要负值做什么?我只需要得到浮点的最小平均值,然后将其用于其他操作@明显的