我被要求输入两个数字,例如 3.005、3.70,然后在不使用 float 或 double 的情况下对它们进行加、减和乘。不知何故,我设法做了一些类似于我被问到的事情。我单独输入数字。如果我输入“3.005”,我首先输入 3,然后我输入 .005。但是由于 005 不等于 0.005 我遇到了问题。例如,我输入 3.005 和 4.70,当我添加它们时,我得到 7.75,这是不正确的。我该如何解决?这就是我输入值(value)观的方式。
printf("first number:");
scanf("%d.%d",&n1.integer,&n1.fraction);
printf("second number:");
scanf("%d.%d",&n2.integer,&n2.fraction);
这是我将两个值相加的函数。
int add(n1,f1,n2,f2,n1digit,n2digit){ //n1-2digit is number of digits of n1-2's fraction.
int t;
int y=1;
int fraction;
int integer;
if (n1digit>n2digit){
t=n1digit;
}
else if (n2digit>n1digit){
t=n2digit;
}
else {
t=n2digit;
}
fraction=f1+f2;
integer=n1+n2;
int temp=fraction;
int i=0;
while (temp>0){
temp=temp/10;
i=i+1;
}
if (i>t){
integer=integer+1;
y=pow(10,i-1);
fraction=fraction%y;
}
printf("%d.%d\n",integer,fraction);
请您参考如下方法:
根据您在@ruohola 的回答中发布的提示,您可以执行以下操作:
- 定义小数位数的最大数目,例如3 或 6
- 将数字作为字符串读取,使用
strtol()
转换整数部分。并跳过“。” - 如果小数部分比小数位数短,则附加相应的'0',因此'70'变为'700'或'700000','5'变为'500'或'500000'
- 使用
strtoul()
将该数字存储到另一个(无符号)整数值中
现在你有两个整数值,代表可以完成剩下的事情