读书人

C语言常数计算的有关问题求解。多谢

发布时间: 2012-05-09 12:13:59 作者: rapoo

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。这样的计算是不会有不精确问题的。

读书人网 >C语言

热点推荐