0

我在下面的 VB.net 中有代码:

me.Index = Format(Convert.ToDouble(g.Trim()), "##.##")

结果:120.00

我如何在 C# 中做同样的事情。我不在 C# 中使用格式函数。我只希望结果不会在点之后放置超过两个值。我的意思是如果我发送值 120.120000 那么结果将是 12.12

4

3 回答 3

3

目前尚不清楚“我不在 C# 中使用格式函数”是什么意思,但您当然可以使用string.Format. 但是,使用double.ToString可能会更简单:

Index = Convert.ToDouble(g.Trim()).ToString("0.##");

(我已更改前导##0确保始终有前导数字,因此您不会得到例如“.5”。显然,如果您真的希望前导数字是可选的,请将其更改为"#.##". 我不看到使用##作为前缀的好处。)

然而:

  • 这将使用当前区域性的小数分隔符;那是你想要的,还是你一直想使用的.
  • 如果数字的十进制表示很重要,您可能根本不想使用double。你确定你不应该使用decimal吗?
于 2012-11-05T06:50:56.740 回答
0

你可以这样做,

decimal.Round(yourValue, 2, MidpointRounding.AwayFromZero);
于 2012-11-05T06:55:58.947 回答
0

要么你用这个

var value = 2.346;
var str = value.ToString("0.00");

或者

decimal.Round(yourValue, 2, MidpointRounding.AwayFromZero); //就像在 msdn 站点中一样,它将十进制值四舍五入到指定的精度。

或者像这样使用 Round 函数

decimal a = 1.994444M;

Math.Round(a, 2);
于 2012-11-05T06:56:56.137 回答