c语言中关于如何判断一个浮点小数有几位小数的问题我在编写C程序时遇到一个需要判断一个浮点小数有几位小数的问题,于是 我便想到用if((n*10)==(int)(n*10))来判断n是否是一位小数,同样用if ((
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 19:47:58
![c语言中关于如何判断一个浮点小数有几位小数的问题我在编写C程序时遇到一个需要判断一个浮点小数有几位小数的问题,于是 我便想到用if((n*10)==(int)(n*10))来判断n是否是一位小数,同样用if ((](/uploads/image/z/5301828-36-8.jpg?t=c%E8%AF%AD%E8%A8%80%E4%B8%AD%E5%85%B3%E4%BA%8E%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%B5%AE%E7%82%B9%E5%B0%8F%E6%95%B0%E6%9C%89%E5%87%A0%E4%BD%8D%E5%B0%8F%E6%95%B0%E7%9A%84%E9%97%AE%E9%A2%98%E6%88%91%E5%9C%A8%E7%BC%96%E5%86%99C%E7%A8%8B%E5%BA%8F%E6%97%B6%E9%81%87%E5%88%B0%E4%B8%80%E4%B8%AA%E9%9C%80%E8%A6%81%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%B5%AE%E7%82%B9%E5%B0%8F%E6%95%B0%E6%9C%89%E5%87%A0%E4%BD%8D%E5%B0%8F%E6%95%B0%E7%9A%84%E9%97%AE%E9%A2%98%2C%E4%BA%8E%E6%98%AF+%E6%88%91%E4%BE%BF%E6%83%B3%E5%88%B0%E7%94%A8if%28%28n%2A10%29%3D%3D%28int%29%28n%2A10%29%29%E6%9D%A5%E5%88%A4%E6%96%ADn%E6%98%AF%E5%90%A6%E6%98%AF%E4%B8%80%E4%BD%8D%E5%B0%8F%E6%95%B0%2C%E5%90%8C%E6%A0%B7%E7%94%A8if+%28%28)
c语言中关于如何判断一个浮点小数有几位小数的问题我在编写C程序时遇到一个需要判断一个浮点小数有几位小数的问题,于是 我便想到用if((n*10)==(int)(n*10))来判断n是否是一位小数,同样用if ((
c语言中关于如何判断一个浮点小数有几位小数的问题
我在编写C程序时遇到一个需要判断一个浮点小数有几位小数的问题,于是 我便想到用if((n*10)==(int)(n*10))来判断n是否是一位小数,同样用if ((n*100)==(int)(n*100))来判断n是否是两位小数,于是我便在turbo C中写 了这么一段程序来测试 #include main() { float a; scanf("%f",&a); if((a*100)==(int)(a*100)) printf("Y\n"); else printf("N\n"); } 按理来说我输入任何一个小数部分不超过2位的数都应该输出“Y”,可是运 行时我只有输入0.25、0.75、0.5时输出的才是"Y",其它的都是“N”,这令 我百思不得其解.比如说我输入0.12,a*100就是12,而(int)(a*100)显然也 是12,因此if语句就是真的,但运行结果是输出“N”,按理说只有当我输 入多于两位小数(比如是0.235)才会是“N”,因为0.235*100=23.5,而 (int)(0.235*100)则是23,所以为假.将上面的100改为10的时候,只输入0 和0.5的时候是“Y”.我运行了好几遍都是这样,搞的我头都大了.在此我 能否提供更好的判断有几位小数的方法,我很着急!
c语言中关于如何判断一个浮点小数有几位小数的问题我在编写C程序时遇到一个需要判断一个浮点小数有几位小数的问题,于是 我便想到用if((n*10)==(int)(n*10))来判断n是否是一位小数,同样用if ((
这个问题的原因应该不是你程序错误的原因,而是存储的原因.如果你将一个整数存成一个浮点数(比如1),在内存里可能是1的小数点后跟了好几个0然后又有一个1.(类似于1.0000001)