我如何修复C#中的十进制值点?

时间:2012-11-05 06:49:20

标签: c# vb.net

我在VB.net中有以下代码:

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

结果:1​​20.00

我在C#中如何做同样的事情。我不在C#中使用格式化功能。我只想要结果不会超过两个值后点。我的意思是如果我发送价值120.120000,那么结果将是12.12

3 个答案:

答案 0 :(得分:3)

“我不在C#中使用格式化功能”并不清楚你的意思,但当然你可以使用string.Format。但是,使用double.ToString可能更简单:

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

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

然而:

  • 这将使用当前文化的小数分隔符;是你想要的,还是总是想要使用.
  • 如果数字的十进制表示很重要,您可能根本不想使用double。您确定不应该使用decimal吗?

答案 1 :(得分:0)

你可以这样做,

decimal.Round(yourValue, 2, MidpointRounding.AwayFromZero);

答案 2 :(得分: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);