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

How to form a Double with an Integer and Fractional parts

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

相反

我在 swift 中这样做,但我正在寻找任何数学方法。

let integer = 12
let fractional = 34
let d = ???(12, 34) // 12.34

对于一般情况,您必须找到小数部分的位数。所以我假设 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ël Hecht

#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 :- 如果给定的数字是负数,你必须小心。