C语言常数计算的问题,求解。谢谢。
无论下面采用哪种定义:
const float TrqStep_Max=150.0/20.0*2.0;
const float TrqStep_Max=150/20*2;
const float TrqStep_Max=150.1*2.0/20.0;
下列函数跑出来的Gttt都是14:
- C/C++ code
float Gttt;void funcB(float x, float y){ Gttt = (float)TrqStep_Max; if( fabsf(x-y) >= 30) FlagA = 1; else FlagA = 0; if( fabsf_local(x-y) >= 30) FlagB = 1; else FlagB = 0; return;}请问为什么既不是15、也不是14.xxxx,而是整数14?
[解决办法]
我vs2010上试了一下,输出是:15.000000
你用的什么编译器。
[解决办法]
- C/C++ code
const float TrqStep_Max=150.0f/20.0f*2.0f;const float TrqStep_Max=150.0f/20.0f*2.0f;const float TrqStep_Max=150.1f*2.0f/20.0f;float Gttt;void funcB(float x, float y){ Gttt = (float)TrqStep_Max; if( fabsf(x-y) >= 30.0f) FlagA = 1; else FlagA = 0; if( fabsf_local(x-y) >= 30.0f) FlagB = 1; else FlagB = 0; return;}
[解决办法]
为什么我跑出来就是15呢?
[解决办法]
除数是20,而被除数并不很大,个位以下又是0。这样的计算是不会有不精确问题的。