删除小数点后的数字c#

remove numbers after decimal c#

我正在尝试编写代码来统一显示货币,但我正在尝试删除小数点后的所有数字,小数点后的 1 除外,因此它应该显示“34.4”,但它确实显示“34.454”

这是实际的游戏视图和检查器 https://i.stack.imgur.com/b6CNb.png

这是全部代码

任何和所有的帮助都会很棒

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Money : MonoBehaviour
{
    public float MoneyValue;
    public Text MoneyTextDisplay;
    private float MoneyDigit;
    void Start()    
    {



    }

    void Update()
    {
        
        MoneyDigit = Mathf.Floor(Mathf.Log10(MoneyValue) + 1);
     
        if (MoneyDigit <4)
        {
            MoneyTextDisplay.text = "Money: " + MoneyValue;
        }
        if (MoneyDigit > 3 && MoneyDigit < 7)
        {
            MoneyTextDisplay.text = "Money: " + MoneyValue / 1000  + "K";
        }
        


    }
}
 

试试这个:

void Update()
{
    MoneyDigit = Mathf.Floor(Mathf.Log10(MoneyValue) + 1);
    if (MoneyDigit <4)
    {
        MoneyTextDisplay.text = "Money: " + MoneyValue.ToString("0.00");
    }
    if (MoneyDigit > 3 && MoneyDigit < 7)
    {
        MoneyTextDisplay.text = "Money: " + (MoneyValue / 1000).ToString("0.0") + "K";
    }
}

当您将数字连接到字符串时,编译器会在数字上插入对 ToString() 的调用以从中获取字符串,然后连接两个结果字符串。

然而,数字提供自定义格式选项,您可以根据需要自行访问,例如:

MoneyTextDisplay.text = $"Money: {MoneyValue / 1000:0.0}K";

在这种情况下,0.0 意味着您总是希望看到恰好一位小数。 0.# 表示您最多希望看到一位小数,但如果为 0,则没有小数。使用您喜欢的任何一个。

使用math.floor();。这将删除所有小数。将您的原始数字乘以十,取底,然后除以十。

使用字符串格式。我将显示“N1”作为格式,但您可以将其更改为使用其他 numeric format strings.

        if (MoneyDigit <4)
        {
            MoneyTextDisplay.text = $"Money: {MoneyValue:N1}";
        }
        if (MoneyDigit > 3 && MoneyDigit < 7)
        {
            MoneyTextDisplay.text = $"Money: {MoneyValue / 1000:N1}K";
        }

作为旁注,您可能希望使用 decimal 类型而不是浮点数,因为它设计用于货币之类的东西,您不希望丢失浮点数据.

根据您的示例,您希望截断数字而不是四舍五入。 要像这样截断你需要应用一个小公式

var truncatedNumber =  Math.Floor(MoneyValue * 10f) / 10f;

乘以 10 会将 34.454 变为 344.54。然后 Math.Floor 去掉多余的小数所以你的数字变成 344 最后除以 10 结果变成 34.4

我认为最简单的方法是使用这样的 .ToString(string) 方法 (.ToString("F1")):

decimal dec = 12.127565746m;
Console.WriteLine(dec.ToString("F1"));

这段代码的输出是12.1

F1 表示“.”后一位 例如,您可以使用 F3 表示三位数字。 (输出 12.127)