我已经用C语言编写了一个计算器,除了尝试将99999999 * 99999999 [8个9乘8个9]相乘时,其他所有方法都运行良好。它会自动将它们四舍五入为100 000 000.0,显然,我不希望这种情况发生。我正在使用float进行数字运算,精度最高为1。我尝试将float更改为double,但是无论如何都无法正常工作。我已经听说过有关%g的信息,但是我没有找到有关它的信息,并且不确定如何使它工作。任何帮助深表感谢!
编辑
这是我的代码:
#include<stdio.h>
#include<math.h>
int main()
{
char op;
float numberone,numbertwo;
printf("Enter the operation: ");
scanf("%f%c%f\n", &numberone, &op, &numbertwo);
switch(op) {
case '+':
printf("%.1f + %.1f = %.1f",numberone, numbertwo, numberone+numbertwo);
break;
case '-':
printf("%.1f - %.1f = %.1f",numberone, numbertwo, numberone-numbertwo);
break;
case '*':
printf("%.1f * %.1f = %.1f",numberone, numbertwo, numberone*numbertwo);
break;
case '/':
if(numbertwo==0){
printf("You cannot divide by zero.");
}
else{
printf("%.1f / %.1f = %.1f",numberone, numbertwo, numberone/numbertwo);}
break;
case'^':
printf("%f ^ %f = %f", numberone, numbertwo, pow(numberone,numbertwo));
break;
default:
printf("Error! operator is not correct");
break;
}
return 0;
}
当我乘以99999999 * 99999999时,结果为:100 000 000.0 * 100 000 000.0 = 10000000000000000 000.0。
最佳答案
您的程序将使用这些值,仅使用double
精度,在这种情况下scanf
必须使用%lf
格式说明符。如果您想要更大的值,则必须学习其他答案中提到的libgmp。