将小数位添加到小数值

时间:2017-02-07 14:10:02

标签: c#

我有一个api,它接收一个十进制值作为字符串。

例如:"1.96"

我使用以下代码解析此字符串值:

decimal.TryParse("1,96", out myDecimalVar)

但我需要以下小数值:1.96000

如果没有Math.Round我该怎么办?因为Math.Round会返回1.97000

韩国社交协会!

3 个答案:

答案 0 :(得分:1)

doublefloat不同,decimalBCD二进制十进制), 所以你可以玩一个技巧

 // Be sure, that your current culture uses "," (comma)
 // as a decimal separator (e.g. Russian, ru-Ru culture)
 decimal.TryParse("1,96", out myDecimalVar);

 // add up a special form of zero
 myDecimalVar += 0.00000m;

 // 1,96000
 Console.Write(myDecimalVar);

详情请见

https://msdn.microsoft.com/en-us/library/system.decimal(v=vs.110).aspx

  

十进制值的二进制表示由1位符号组成,   一个96位整数,一个比例因子用于分割   96位整数,并指定它的小数部分。   缩放因子隐含地为数字10,提升为指数   范围从0到28.

因此我们将myDecimalVar转换为196000 整数-5 比例因子

更多自然方式是按解析,并且代表,并希望借助格式化:< / p>

 decimal.TryParse("1,96", out myDecimalVar);
 ...
 Console.Write(myDecimalVar.ToString("F5")); // 5 digits after the decimal point

答案 1 :(得分:0)

如果您需要它作为字符串,那么:

`       string v = "1.96";
        decimal d;
        decimal.TryParse(v, out d);
        Console.Write(d.ToString("f4"));
`

答案 2 :(得分:0)

你有不同的选择

decimal myDecimalVar;
decimal.TryParse("1,96", out myDecimalVar);
Console.WriteLine(myDecimalVar.ToString("0.00000")); // 1,96000
Console.WriteLine(myDecimalVar.ToString("F5"));      // 1,96000

已经回答了。