c#将浮点转换为始终有2位小数,即使它们是零

c#将浮点转换为始终有2位小数,即使它们是零,c#,C#,假设我有10.00美元的运费。如果我将这个值传递给浮点,它将变成10。不是“10.00” 我试过: float shippingRounded=float.Parse(“10,00”) 但这会将字符串解析为浮点数,并剪切最后两位数字 如何使用浮点数并使其保留两位小数,而不考虑它们是什么?使用: shippingRounded.ToString(".00") 它将显示 10,00 我编写了一个函数,它总是将价格转换为正确的格式: public static string R

假设我有10.00美元的运费。如果我将这个值传递给浮点,它将变成10。不是“10.00”

我试过:

float shippingRounded=float.Parse(“10,00”)

但这会将字符串解析为浮点数,并剪切最后两位数字

如何使用浮点数并使其保留两位小数,而不考虑它们是什么?

使用:

 shippingRounded.ToString(".00")
它将显示

10,00


我编写了一个函数,它总是将价格转换为正确的格式:

public static string ReturnFormattedPrice(string priceWithOutCurrencySymbol)
        {

            string[] values = new string[2];
            List<string> valueList = new List<string>();

            valueList.Add("");
            valueList.Add("");

            // cause it will be either dot or comma 
            if (priceWithOutCurrencySymbol.Contains(","))
                values = priceWithOutCurrencySymbol.Split(",");
            else
                values = priceWithOutCurrencySymbol.Split(".");

            valueList[0] = values[0];


            if (values.Length == 1)       
                valueList[1] = ",00";
            else if(values[1].Length == 1)
                valueList[1] = "," + values[1] + "0";
            else
                valueList[1] = "," + values[1];



            return valueList[0] + valueList[1];

        }
public静态字符串返回格式化价格(字符串价格不含CurrencySymbol)
{
字符串[]值=新字符串[2];
列表值列表=新列表();
价值清单。添加(“”);
价值清单。添加(“”);
//因为它将是点或逗号
if(不含货币符号的价格。包含(“,”)
值=不含CurrencySymbol.Split(“,”)的价格;
其他的
值=不含CurrencySymbol.Split(“.”)的价格;
valueList[0]=值[0];
如果(values.Length==1)
估价单[1]=“,00”;
else if(值[1]。长度==1)
值列表[1]=“,”+值[1]+“0”;
其他的
值列表[1]=“,”+值[1];
返回值列表[0]+值列表[1];
}

您不能<代码>浮点不记录精度。您要查找的货币金额
十进制
。当然,您可以选择始终将浮点值格式化为两位小数(
10f.ToString(“N2”)
),但在任何情况下都不希望将浮点值用于货币值。如果您希望格式化浮点值,以便将其显示为字符串,则可以使用。但对于它的实际值,它是一个数字,它不会在它的末尾记录多余的值,例如0,除非在0后面有像小数点这样重要的数据。要恢复数字,你需要格式化数字以便于显示。是更适合存储货币的类型,原因有很多,请参阅。谢谢,这是我所需的最接近的类型。@innom请尝试使用不同于10.xx的值,然后尝试123456.xx,看看如果继续使用
float
,您会遇到什么问题。您绝对应该切换到
decimal