我正在使用C#创建游戏计时器(以下是我的代码)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // key to ensuring this works. interfaces with the ui.
public class Timer2 : MonoBehaviour
{
public static float TimerValue = 120; // initial timer value
Text timer;
// Use this for initialization
void Start()
{
timer = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
timer.text = ": " + TimerValue;
TimerValue = TimerValue - Time.deltaTime;
}
}
(括号在堆栈溢出时格式不佳,但在c#中都可以正常工作)
此计时器解决方案的问题在于它将计时器显示为浮点型(请参见下图)。虽然技术上可行,但看起来确实很糟糕,并且数字左右移动(由于数字的宽度不同),使其难以阅读。
我想知道的是如何舍入这个数字,以便可以将其显示为整数。我环顾四周,只发现四舍五入的双精度和十进制数据类型。我也想不出如何对变量进行四舍五入,因为我尝试过的所有示例均不适用于变量。理想情况下,我想继续使用float,因为它更易于操作,并且不需要十进制ro double的详细信息。
非常感谢。
答案 0 :(得分:3)
由于您只关心浮点数的显示,而没有使用数字进行进一步的计算,因此可以只使用String类的格式设置功能。 例如,
timer.text = ": " + TimerValue.ToString("F2");
将对其进行四舍五入,并且仅显示至小数点后两位。
timer.text = ": " + TimerValue.ToString("F0");
会将其四舍五入为整数。
Here's the documentation on the various formatting options available
答案 1 :(得分:2)
您可以只使用string.Format
来显示具有设定的小数位数的值。
例如:
timer.text = string.Fomat(": {0:0}", TimerValue); // format with 0 decimal places
// output
// : 118
timer.text = string.Fomat(": {0:0.00}", TimerValue); // format with 2 decimal places
// output
// : 117.97
请注意,这将舍入值。