C# 将字符串转换为十进制
如何将字符串转换为最多3位的小数 我的绳子是这样的C# 将字符串转换为十进制,c#,.net,C#,.net,如何将字符串转换为最多3位的小数 我的绳子是这样的 striing aa = "22.333" string bb = "22" string cc = "22.4444" string aa = "22.333"; string bb = "22"; string cc = "22.4444"; decimal d = decimal.Parse(aa); decimal e = decimal.Parse(bb); decimal f =
striing aa = "22.333"
string bb = "22"
string cc = "22.4444"
string aa = "22.333";
string bb = "22";
string cc = "22.4444";
decimal d = decimal.Parse(aa);
decimal e = decimal.Parse(bb);
decimal f = decimal.Parse(cc);
Console.WriteLine(string.Format("{0:0.000}", d));
Console.WriteLine(string.Format("{0:0.000}", e));
Console.WriteLine(string.Format("{0:0.000}", f));
如何将其转换为十进制您可以使用decimal.Parse(ToDecimal)方法:
首先,可以将字符串转换为十进制值:
var convertDecimal = Convert.ToDecimal(value);
之后,如果它更长,您可以将其取整:据我所知,如果字符串较小,则无法将其“转换”为三位小数,因为它与零一起保存3位可以通过
Math.Round
实现。最安全的字符串转换是TryParse
方法:
string srcString = "123.45123";
decimal outDecimal;
if (decimal.TryParse(srcString, out outDecimal))
{
// conversion is successful, so you can use outDecimal variable
outDecimal = decimal.Round(outDecimal, 3, MidpointRounding.AwayFromZero);
}
你可以这样做
striing aa = "22.333"
string bb = "22"
string cc = "22.4444"
string aa = "22.333";
string bb = "22";
string cc = "22.4444";
decimal d = decimal.Parse(aa);
decimal e = decimal.Parse(bb);
decimal f = decimal.Parse(cc);
Console.WriteLine(string.Format("{0:0.000}", d));
Console.WriteLine(string.Format("{0:0.000}", e));
Console.WriteLine(string.Format("{0:0.000}", f));
您可以在一行和一行中转换和舍入以实现本地化:
string cc = "22.4444";
IFormatProvider provider = System.Globalization.CultureInfo.InvariantCulture;
decimal ccDecimal = Math.Round(Convert.ToDecimal(cc,provider), 3);
将返回22.444
试试看
string value;
decimal number;
value = "1,643.57";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
你有没有试过把你的问题标题放到谷歌上?还是在这里搜索?我在这里被绊倒了。请帮忙。我今天会因此失去乔布。。我是asp.NET新手,我需要知道它的小数点后3位。我的大脑现在一片空白..什么?你丢了工作,因为你不能把这些字符串解析成十进制?我在这里被绊倒了。请帮忙。我今天会因此失去乔布。。刚接触asp.net,我需要知道它的小数点后3位。我的大脑现在一片空白然后可以使用TryParse方法:value=“22.333”;if(Decimal.TryParse(value,out number))Console.WriteLine(number);else Console.WriteLine(“无法分析{0}.”,值);此代码不安全-在使用
,
作为小数点的区域性中,它将失败。很多欧洲国家都这样做。编译器甚至会对此发出警告。重复问题显示了使用InvariantCultureWell解析的正确方法,您应该测试它。不会的。不能使用数字格式格式化字符串:此代码不安全-在使用,
作为小数点的区域性中,此代码将失败。很多欧洲国家都这样做。编译器甚至会对此发出警告。重复问题显示了使用不变量文化解析的正确方法此代码不安全-在使用,
作为小数点的文化中,此代码将失败。很多欧洲国家都这样做。编译器甚至会对此发出警告。重复问题显示了使用不变量CultureEyes解析的正确方法,我忘记了CultureThat此代码不安全-在使用,
作为小数点的区域中,它将失败。很多欧洲国家都这样做。编译器甚至会对此发出警告。重复问题显示了使用不变量文化解析的正确方法此代码不安全-在使用,
作为小数点的文化中,此代码将失败。很多欧洲国家都这样做。编译器甚至会对此发出警告。重复问题显示了使用不变量文化进行解析的正确方法。另一种解决方案只是用try-catch块包围语句。对我来说,它们不是解决方案的一部分,因为这是解析非基本类型时可能遇到的一般问题。但是你在写。我编辑答案。没有其他答案使用try/catch。副本中接受的答案使用CultureInfo.InvariantCulture。事实上,编译器和Resharper都会用这样的代码发出警告,建议使用CultureInfo.InvariantCulture
a我知道我要快速。。。