none
時間運算問題 RRS feed

  • 問題

  • using UnityEngine;
    using System.Collections;

    public class timer : MonoBehaviour 
    {
    public int lapsNumber=2;
    public float startTime=0;
    public float stageTime=0;
    public float y;
    public float z;
    public int a;
    public int b;
    public float sec;
    public int min;
    public int hour;

    void Start()
    {

    startTime = Time.time;

    }

    void Update()
    {
    stageTime = (Time.time - startTime);
    y = (int)(stageTime * 100 + .5);
    z = y / 100;
    a = (int)(z / 60);
    sec = z % 60;
    b = (int)(z / 60);
    min = a % 60;
    hour = b / 60;
    }

    void OnGUI() {
    GUIStyle myStyle = new GUIStyle (GUI.skin.GetStyle("label"));
    myStyle.fontSize = 40;
    GUI.Label (new Rect (20, 20, Screen.width/2, Screen.height/2), hour.ToString()+":"+min.ToString()+":"+sec.ToString(),myStyle);


    }

    }

    小弟這個程式再顯示的時候,超過一分鐘之後小數突然多了好幾位,但不知道是哪邊出問題,請求各位大神幫忙

    2016年11月15日 上午 03:19

解答

  • 使用浮點數本來就會有計算誤差。

    時間計算請直接使用 DateTime 型別。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年11月15日 下午 05:05

所有回覆

  • 你的 sec datatype 是 float 哦!

    是要用 int 嗎?

    public float sec;


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2016年11月15日 上午 07:15
  • 使用浮點數本來就會有計算誤差。

    時間計算請直接使用 DateTime 型別。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年11月15日 下午 05:05
  • Hi,你不能切掉小數讓它固定是一或兩位嗎?
    2016年11月16日 上午 01:20
  • 樓主哪去了 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2016年11月18日 上午 02:32
    版主