将具有多个小数位的浮点数转换为仅包含一个小数位的浮点数

时间:2016-01-13 10:59:50

标签: c

我想知道是否有一个代码可以将浮点数转换为:4.91820238到只有一个小数位的浮点数:4.9 in C而不使用任何库 P.S:我不使用print()函数,我想转换它并将其值改为sotre?

3 个答案:

答案 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;
}

请注意,上面的代码受浮点数通常的精度/范围问题的影响。