-2

以下代码在尝试保存分数时给出了奇怪的结果(它增加了巨大的价值,好像 if 语句失败了)。

double EndScore = (double)(mScoreManager.getScore());

    if(mWorldCounterBox.getCurrentAlivePopulationPercent() < 97.0)
    {
        EndScore += (mWorldCounterBox.getCurrentAlivePopulationPercent()) * 100.00;
    }

    System.out.println(mWorldCounterBox.getCurrentAlivePopulationPercent()); //Output: 1.0544652507298142E-7
    System.out.println(EndScore); //Output: 1.0000105446525074

    //Increase score per dead %.
    if(mWorldCounterBox.getCurrentAlivePopulationPercent() < 0.1)
    {
        EndScore += 20000.0;
    }
    System.out.println(EndScore); //Outout 20001.000010544652 -- WRONG HERE
    SettingsSaveLoad.setCountryScore(mCurrentWorld, (float)(EndScore));
4

2 回答 2

1

两个时间都满足的条件。

如果值小于 0.1,它也小于 97.0

我猜你把你的条件弄错了

mWorldCounterBox.getCurrentAlivePopulationPercent()小于 0.1。

如果第一个条件满足

if(mWorldCounterBox.getCurrentAlivePopulationPercent() < 97.0)  //mWorldCounterBox.getCurrentAlivePopulationPercent()  <97.0  true

它也总是进入第二个条件

  if(mWorldCounterBox.getCurrentAlivePopulationPercent() < 0.1)    //mWorldCounterBox.getCurrentAlivePopulationPercent()  <0.1  true

边注:

请遵循 java 命名约定。例如:EndScore应该是endScore

于 2013-05-28T11:56:55.433 回答
1

System.out.println(mWorldCounterBox.getCurrentAlivePopulationPercent()); //输出:1.0544652507298142E-7

手段mWorldCounterBox.getCurrentAlivePopulationPercent()1.0544652507298142 * ((10)^-7) 小于0.1

所以之后

EndScore += 20000.0; //1.0000105446525074+ 20000.0

EndScore变成20001.000010544652

于 2013-05-28T11:58:42.417 回答