Math.Round的行为并不像我想要的那样。 (X.0xxxxx号码)

时间:2013-10-14 11:30:46

标签: c# .net math rounding

快速提问。 我正在制作一个图表,所以我传递给函数的数字可以是任何东西(取决于缩放等)。假设我想将数字3.086948353舍入为3,但我仍然希望其他数字如2.199999999可以舍入到2.2。

目前它看起来像这样:

Math.Round(value, 10)

1 个答案:

答案 0 :(得分:3)

你想一次性完成两件事:

  1. 如果小数点后的第一个数字为0

  2. ,则获取整数值
  3. 如果小数点后的第一个数字不为0,则将舍入值最多2位数。

  4. 对于第二个选项,您可以使用:

    newValue  = Math.Round(value, 2)
    

    现在是第一个要求: 一旦你得到十进制后的2位数的小数,得到最后两位数字:

    int decimalValue= (int)((newValue  - (int)newValue ) * 100);
    if(decimalValue < 10)
    {
      newValue = Math.Floor(value);
    }