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);
小数点如何显示?似乎数字正在四舍五入。
答案 0 :(得分:1)
默认情况下,如果double首先是一个舍入的数字,则不会显示小数位。我猜player.ExperiencePoints
是int
。并且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