相关疑难解决方法(0)

C#将对象转换为Decimal

我正在尝试将具有该值的对象转换0.39999999999999997为十进制变量而不会丢失精度.

object d = 0.39999999999999997;
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法.

decimal val1 = Convert.ToDecimal(d); // val1 = 0.4
object val2 = Convert.ChangeType(d, Type.GetType("System.Decimal")); // val2 = 0.4
decimal val3 = decimal.Parse(d.ToString()); // val3 = 0.4
decimal val4 = (Decimal) d; // val4 = 0.4
Run Code Online (Sandbox Code Playgroud)

我知道这不是十进制数据类型无法存储此值的问题,如下所示.

decimal val5 = 0.39999999999999997m; // val5 = 0.39999999999999997;
Run Code Online (Sandbox Code Playgroud)

如何在不丢失精度的情况下将此对象转换为十进制?

如果重要的话,我正在使用.NET Framework 3.5.

.net c# precision types

13
推荐指数
2
解决办法
3万
查看次数

输入铸造问题

在将字符串解析为双倍时,我们面临着一个问题.我们需要将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)

问题截屏

c#

-1
推荐指数
1
解决办法
74
查看次数

标签 统计

c# ×2

.net ×1

precision ×1

types ×1