如何用整数和小数部分组成双精度数
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 :- 如果给定的数字是负数,你必须小心。
我得到了两个值,一个双精度数的整数部分和小数部分。形成双重价值的最佳方式是什么?本质上,它与 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 :- 如果给定的数字是负数,你必须小心。