C语言简易计算器:精确计算,避免错误
#define_CRT_SECURE_NO_WARNINGS\ 1\n#include<stdio.h>\n\nint\ main()\n{\n\tfloat\ num1, num2, sum, diff, product, quotient;\n\n\tprintf("欢迎使用ydy牌计算器(v.1.0.0-Demo)!为了使计算结果精确,请确保您输入的数据和运算结果不大于2^64-1.\n");\n\tprintf("\n");\n\n\tprintf("请输入第一个数: ");\n\tscanf("%f", &num1);\n\n\tprintf("请输入第二个数: ");\n\tscanf("%f", &num2);\n\n\tprintf("\n");\n\n\tsum = num1 + num2;\n\tdiff = num1 - num2;\n\tproduct = num1 * num2;\n\n\tprintf("以上两个数的和为:%f\n", sum);\n\tprintf("以上两个数的差为:%f\n", diff);\n\tprintf("以上两个数的积为:%f\n", product);\n\n\t// 检查除数是否为0\n\tif (num2 == 0) //在if语句中不能单个等号(=)来进行判断,这是赋值操作而不是比较操作,否则将导致条件始终为真,导致除法运算后的商始终为0.000。双等号( == ),以进行比较操作。\n\t{\n\t\tprintf("除数不能为0\n");\n\t}\n\telse {\n\t\tquotient = (float)num1 / num2;\n\t\tprintf("以上两个数的商为(精确到小数点后6位): %.6f\n", quotient); //本行中printf函数中的 %.6f表示输出浮点数,并且保留小数点后6位。小数点后的位数可以根据需求进行调整,但是受到浮点数类型的精度限制。在C语言中,float类型的浮点数最多可以保证6位有效数字,而double类型的浮点数最多可以保证15位有效数字。因此,小数点后的位数超过这个范围将会导致精度丢失。在实际使用中,需要根据具体情况选择合适的精度。\n\t}\n\n\tprintf("\n");\n\tprintf("以上是ydy牌计算器(v.1.0.0-Demo)的计算结果,如果您有任何意见或建议,欢迎发送电子邮件至邮箱1524754931@qq.com。感谢您的使用!");\n\n\treturn 0;//本行可能报错: error C2143: 语法错误: 缺少“;”(在“return”的前面) 错误原因:C语言语法规定:变量要定义在当前代码块的最前面。改错见//int sum = 0;行\n\t//return 0;这一行可以不要。因为在C语言中,return 0;语句用于表示程序正常结束,返回一个整数值0,通常用于表示程序执行成功。在这段代码中,return 0;语句放在了main函数的末尾处,表示程序执行完main函数后正常退出。由于return 0;语句是在main函数的最后一行,所以在它后面的代码不会被执行,包括return 0;语句本身。因此,return 0;这一行不会有任何影响。\n}\n为了保证计算结果精确,这个程序对输入的数有什么限制?\n内容:为了保证计算结果精确,这个程序对输入的数有以下限制:\n\n1. 输入的数不能大于2^64-1。程序中的注释提示用户确保输入的数据和运算结果不大于2^64-1,这是因为在计算过程中,超出这个范围的数可能会导致精度丢失。\n\n2. 输入的数不能包含非数字字符或特殊字符。程序使用scanf函数来获取用户输入的数,如果输入的数中包含非数字字符或特殊字符,可能会导致输入错误或计算错误。\n\n3. 如果进行除法运算,除数不能为0。程序中通过判断除数是否为0来避免除以0的错误,如果除数为0,程序会输出提示信息并结束运算。
原文地址: http://www.cveoy.top/t/topic/p49w 著作权归作者所有。请勿转载和采集!