Округлить дробную часть десятичного числа до заданного значения - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу, чтобы десятичная часть числа сменилась на пользовательское значение.

Например:

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

Итак, я хочу округлить число до 99. Используя .NET, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вы хотите игнорировать дробь => использовать 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

0 голосов
/ 09 ноября 2018

Это будет округлять значения с десятичными знаками до .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
...