如何用整数和小数部分构成双精度数

问题描述 投票:-1回答:1

我得到两个值,即整数和双精度数的小数部分。形成双重价值的最佳方法是什么?本质上,它将与modf()相反。

我正在快速进行此操作,但是我正在寻找任何数学方法。

let integer = 12
let fractional = 34
let d = ???(12, 34) // 12.34
c swift floating-point double fractions
1个回答
1
投票

对于一般情况,您必须找到小数部分中的位数。所以我假设x是整数部分,y是小数部分。然后,您必须将y除以10以得到y的位数的幂。然后,您必须将x添加到更新的y值。

这里是代码,

#include <stdio.h>
#include<math.h>
int main()
{
    int x,y;
    scanf("%d %d",&x,&y);
    int count = 0;
    int z = y;
    while(z>0)
    {
        count+=1;
        z = z/10;
    }
    float ans = 0;
    ans = (double)x + (double)y/pow(10,count);
    printf("%f",ans);
    return 0;
}

希望这可以解决您的问题。

如果x和y也被视为浮点数,则还有更好的解决方案。感谢JoëlHecht

#include <stdio.h>
#include<math.h>
int main()
{
    double x,y;
    scanf("%lf %lf",&x,&y);
    while(y>=1)
    {
        y = y/10.0;
    }
    printf("%lf",x+y);
    return 0;
}

P.S:-如果给定的数字为负,则必须小心。

© www.soinside.com 2019 - 2024. All rights reserved.