输入铸造问题

Sen*_*jan -1 c#

在将字符串解析为双倍时,我们面临着一个问题.我们需要将18位数字符串(<123,456,789,012>.<123456>)转换为double.它只返回小数点后的5位数.当我们试图减少数字的数字时,它工作得很好.我们附上了三个不同场景的屏幕截图.变量'S'是输入,retValue是输出值.

请帮助我们将123,456,789,012.123456转换为123456789012.123456

string s = "123,456,789,012.123456"; 
double retVal; 
System.Globalization.CultureInfo cInfo = new System.Globalization.CultureInfo(System.Web.HttpContext.Curr??ent.Session["culture??"].ToString()); 
retVal = double.Parse(s, NumberStyles.Any, cInfo);
Run Code Online (Sandbox Code Playgroud)

问题截屏

xan*_*tos 6

A double的精度最高可达15位,请参阅MSDN:

Double值最多包含15个十进制数字的精度,但内部最多保留17位数.

你应该使用decimalDecimal.Parse(..)28-29位有效数字.