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你想要负值做什么?我只需要得到浮点的最小平均值,然后将其用于其他操作@明显的