C# 将字符串转换为十进制

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 =

如何将字符串转换为最多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 = 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我知道我要快速。。。