不管设的double还是float还是int得数永远是-1.#j,求解答
数字太大或太小,超过类型能保存的最大或最小值就会有这个
你这里计算S的时候A,B并没有初始化,s可能为0
从float下一句到scanf之间的代码没意义哈。
由于你程序中s
未初始化,也未对其赋值,其值是不确定,有可能是0,也有可能是NaN,故1/s
的结果就可能是INF, -INF,或NaN。当按浮点格式打印这些数时,会显示1.#INF
或-1.#INF
。而你的输出格式指定了只保留2位小数,-1.#INF
四舍五入保留2位小时得到-1.#J
参考
https://devblogs.microsoft.com/oldnewthing/20130228-01/?p=5103
https://stackoverflow.com/questions/840081/what-does-floating-point-error-1-j-mean
首先你得先输入,然后再计算,把scanf语句放到变量定义之后。
然后中间那一堆0<H<1000之类的是要干啥呢?毫无意义的代码啊
最后double型输入用 %lf,float型输入用%f,int型输入用%d,不能错