绘制一个双精度并显示小数位?

时间:2011-10-12 04:26:38

标签: c# double decimal

public class ExperienceTable
{
    public static int MaxExperiencePoints;
    public static double PercentToNextLevel;

    public static void checkLevel(Hero player)
    {
        if (player.ExperiencePoints >= 0)
        {
            player.Level = 1;
            MaxExperiencePoints = 15;
            PercentToNextLevel = player.ExperiencePoints / MaxExperiencePoints;
        }
    }

然后使用以下方法将其绘制到屏幕上:

        GameRef.SpriteBatch.DrawString(GUIFont, "" + ExperienceTable.PercentToNextLevel, new Vector2((int)player.Camera.Position.X + 1200, (int)player.Camera.Position.Y + 676), Color.White);

小数点如何显示?似乎数字正在四舍五入。

3 个答案:

答案 0 :(得分:1)

默认情况下,如果double首先是一个舍入的数字,则不会显示小数位。我猜player.ExperiencePointsint。并且int除以另一个int将始终生成int,从而产生舍入值。

假设player.ExperiencePoints实际上是int,并且您希望在分割时获得分数,则应将分割线更改为以下内容:

PercentToNextLevel = (double) player.ExperiencePoints / MaxExperiencePoints;

如果您希望显示小数位数.00,请将ExperienceTable.PercentToNextLevel更改为以下内容。

ExperienceTable.PercentToNextLevel.ToString("0.00")

.ToString("0.00")会将double值转换为包含2位小数的字符串,如果必须,则将其舍入到两位小数。

答案 1 :(得分:1)

我认为

PercentToNextLevel = player.ExperiencePoints / MaxExperiencePoints;

是整数除法(如果player.ExperiencePoints是整数)。

试试:

PercentToNextLevel = (double)player.ExperiencePoints / MaxExperiencePoints;

答案 2 :(得分:0)

如果player.ExperiencePoints也是int,那么您将整数除以整数,结果是舍入整数。相反,使用

PercentToNextLevel = (double)player.ExperiencePoints / MaxExperiencePoints