Как округлить плавающие переменные в C # - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю таймер для игры на 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.

спасибо заранее.

Unity screenshot

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете просто использовать 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

Обратите внимание, что это будет округлять значения.

0 голосов
/ 13 февраля 2019

Поскольку вы просто заинтересованы в отображении числа с плавающей запятой и не используете число для дальнейших вычислений, вы можете просто использовать функции форматирования класса String.Например,

timer.text = ": " + TimerValue.ToString("F2");

будет округлять его и отображать только до 2 десятичных знаков.

timer.text = ": " + TimerValue.ToString("F0");

округляет его до целого числа.

Вотдоступная документация по различным вариантам форматирования

...