用逗号和浮点

时间:2015-09-02 13:57:19

标签: c#

我想解析如下:

3.5 -> 3.5
3.484 -> 3.48
3.82822 -> 3.82

等。 但是,

decimal.Parse("3.543") 

收益3543和 所以我做了:

decimal.Parse("3.543",CultureInfo.InvariantCulture) 

收益率为3.543和 但

decimal.Parse(String.Format("{0:0.00}","3.543"),CultureInfo.InvariantCulture);

产量3543

所以我该怎么办?

4 个答案:

答案 0 :(得分:1)

你需要Round方法:

decimal t = 3.82822;
decimal.Round(t, 2);

其中2表示您需要的小数点。

答案 1 :(得分:1)

像这样使用Math.Round:

decimal a = 1.9946456M;

Math.Round(a, 2); //returns 1.99

decimal b = 1.9953454M;

Math.Round(b, 2); //returns 2.00

答案 2 :(得分:0)

我猜你想在两位数之后截断小数位。试试this

public decimal TruncateDecimal(decimal value, int precision)
{
    decimal step = (decimal)Math.Pow(10, precision);
    int tmp = (int)Math.Truncate(step * value);
    return tmp / step;
}

decimal t = 3.82822;
decimal d = TruncateDecimal(t, 2);

答案 3 :(得分:0)

您应该使用实际使用逗号作为小数分隔符的文化。

CultureInfo.GetCultureInfo("fr-fr")

例如。

 Console.WriteLine(decimal.Parse("3,543", CultureInfo.InvariantCulture)); // 3543
 Console.WriteLine(decimal.Parse("3,543", CultureInfo.GetCultureInfo("fr-fr"))); //3,543

如果你想对结果进行舍入。你可以用

Console.WriteLine(String.Format("{0:0.00}", decimal.Parse("3,543", CultureInfo.GetCultureInfo("fr-fr")))); //3,54