我想知道是否有一个代码可以将浮点数转换为:4.91820238到只有一个小数位的浮点数:4.9 in C而不使用任何库 P.S:我不使用print()函数,我想转换它并将其值改为sotre?
答案 0 :(得分:1)
您可以使用标准math.h
标头中的fmodf
功能。
Then subtract the result from the original
#include <stdio.h>
#include <math.h>
int main(void) {
float f = 4.9182;
printf("%f", f - fmodf(f, 0.1));
return 0;
}
修改强>
我从你的评论中看出你处于一个独立的环境中。所以没有标准库。但是你可以通过参考参考站点上的示例实现并进行一些内联汇编来提升你自己的功能。
答案 1 :(得分:1)
只需乘以10并除以10即可,
float a = 4.91820238;
int i;
i = a*10;
num = i/10.0;
// num has 4.9 now
在分裂期间记住10.0
,如果你将它除以10,你只需要得到它的整数商。
答案 2 :(得分:0)
将其转换为整数类型然后再返回:
float myRound(float f, int num_places) {
float factor = 1f;
for (i = 0; i < num_places; i++) {
factor *= 10f;
return ((long long)(factor * (f + .5f)))/factor;
}
请注意,上面的代码受浮点数通常的精度/范围问题的影响。