我得到两个值,即整数和双精度数的小数部分。形成双重价值的最佳方法是什么?本质上,它将与modf()
相反。
我正在快速进行此操作,但是我正在寻找任何数学方法。
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ë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:-如果给定的数字为负,则必须小心。