将小数的小数部分四舍五入为设定值

时间:2018-11-09 12:21:42

标签: .net rounding decimalformat

我希望数字的小数部分更改为自定义值。

例如:

  • 2,34-2,99
  • 3,74-3,99
  • 4,11-4,99

所以我想将数字四舍五入为99。使用.NET,我该怎么办?

2 个答案:

答案 0 :(得分:1)

这会将带有小数的值“舍入”到.99,其他值保持不变。

decimal Round99(decimal value) => 
  value % 1 == 0 ? 
      value : 
      value < 0 ? 
          decimal.Floor(value) + 0.01M :
          decimal.Ceiling(value) - 0.01M;

结果:

1.999 --> 1.99
1.5   --> 1.99
1     --> 1
-1.5  --> -1.99

答案 1 :(得分:0)

您要忽略分数=>使用Math.Truncate
然后,您要将分数设置为0.99 =>添加0.99

Function Make99(x As Decimal) As Decimal
    Return Math.Truncate(x) + 0.99D
End Function

Sub Main()
    Dim testData = {2.34D, 3.74D, 4.11D, 5D}

    For Each t In testData
        Console.WriteLine(t.ToString("0.00") & " - " & Make99(t))
    Next

    Console.ReadLine()

End Sub

输出:

  

2.34-2.99
  3.74-3.99
  4.11-4.99
  5.00-5.99