12

我有一个字符串(确认为十进制表达式)0.4351242134

我想转换成小数点后两位 0.44 的字符串

我应该在 C# 中怎么做?

4

7 回答 7

14
var probablyDecimalString = "0.4351242134";
decimal value;
if (Decimal.TryParse(probablyDecimalString , out value))
    Console.WriteLine ( value.ToString("0.##") );
else
    Console.WriteLine ("not a Decimal");
于 2012-08-22T12:43:57.957 回答
10
var d = decimal.Parse("0.4351242134");
Console.WriteLine(decimal.Round(d, 2));
于 2012-08-22T12:49:41.830 回答
8

好吧,我会这样做:

var d = "0.4351242134";
Console.WriteLine(decimal.Parse(d).ToString("N2"));
于 2012-08-22T12:51:04.543 回答
2
float f = float.Parse("0.4351242134");
Console.WriteLine(string.Format("{0:0.00}", f));

有关string.Format,请参见此内容。

于 2012-08-22T12:46:58.407 回答
2

首先,您必须使用文化进行解析,否则您可能会丢失小数。接下来,您必须有一个文本结果才能具有固定的小数位数。最后,您四舍五入到小数点后两位,但ToString()可以为您做到这一点,因此:

string amount5 = "2.509"; // should be parsed as 2.51

decimal decimalValue = Decimal.Parse(amount5, System.Globalization.CultureInfo.InvariantCulture);
string textValue = decimalValue.ToString("0.00");

// 2.51
于 2021-02-27T13:32:52.093 回答
1

这有帮助吗

double ValBefore= 0.4351242134;
double ValAfter= Math.Round(ValBefore, 2, MidpointRounding.AwayFromZero); //Rounds"up"
于 2012-08-22T12:59:23.213 回答
1
float myNumber = float.Parse("0.4351242134");
Console.WriteLine(string.Format("{0:f2}", myNumber ));

https://msdn.microsoft.com/en-us/library/s8s7t687.aspx

于 2016-10-17T20:51:07.207 回答