【问题标题】:C# Two decimal places [duplicate]C#两位小数[重复]
【发布时间】:2021-12-13 19:08:47
【问题描述】:

如何在字符串中插入小数点?

int attrval = Convert.ToInt32("000504");
decimal val1 = (attrval / 100);  
string val2 = String.Format("{0:.00}", attrval / 100);

val1 = 5需要5.04

val2 = 5.00需要5.04

【问题讨论】:

  • decimal val1 = (attrval / 100.0m);

标签: c# .net


【解决方案1】:

整数除法有问题

 decimal val1 = (attrval / 100);  

由于 两者 attrval100 都是 int 类型,因此结果也是 int5。这一行应该是

 decimal val1 = (attrval / 100m);

请注意m 后缀:这里我们将int 除以decimal (100m) 并得到所需的decimal 结果。 val2 也一样:

 string val2 = String.Format("{0:.00}", attrval / 100m);

【讨论】:

    【解决方案2】:

    两个整数相除返回整数值。这个除法将结果值四舍五入为零,这就是为什么你得到val2 = 5而不是5.04

    如果您希望结果为decimal 类型,请将分子或分母中的至少一个值转换为decimal

    decimal val1 = (attrval / (decimal)100);  //5.04
    

    decimal val1 = (attrval / 100m);    //5.04
    

    现在把它转换成字符串,

    string val2 = String.Format("{0:.00}", var1); //"5.04"
    

    Try it online

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 2012-09-19
      • 2017-03-22
      相关资源
      最近更新 更多