Увеличить последнюю цифру числа

VB2010 У меня есть пользовательская форма, где пользователь вводит числовой формат. Затем подпрограмма циклически перебирает список пар чисел и отображает их в списке категорий:

 User format "0.00"
                            0.00 - 164.04
                            164.04 - 410.10
                            410.10 - 820.21

Я пытаюсь увеличить первое значение на одну цифру, чтобы не было совпадений. что-то вроде:

                            0.00 - 164.04
                            164.05 - 410.10
                            410.11 - 820.21

Я пытаюсь сделать так, чтобы он работал с любым числовым форматом, который вводит пользователь, например, "0,000" или "0,0". То, что у меня сейчас есть (пример для значения 164.04)

1. Convert the value to a string "164.04"
2. Take the right most character "4" and convert to an integer 4
3. Increment the integer value by 1 to get 5
4. Take the characters in the string from step #1 except the last and then append
   the integer from Step #3 as a string to get "164.05".

Казалось, работает в моей программе VB6, но хотел посмотреть, есть ли у кого-нибудь идеи получше. Я также не думаю, что я учел последнюю цифру, являющуюся 9.

Обновление: на основании предложений, приведенных ниже, получилось следующее: положительные и отрицательные числа, целые числа и числа с плавающей запятой:

Dim p As Integer
Dim numAsStr As String = num.ToString(fmt)
If numAsStr.IndexOf(".") = -1 Then
    p = 0
Else
    p = numAsStr.Length - numAsStr.IndexOf(".") - 1
End If
Dim result as Double = ((num* (10 ^ p) + 1.0) / (10 ^ p))

1 ответ

Решение

Вот алгоритм:

1. Найти десятичные точки (р)

2. умножьте число на 10^p, увеличьте его на единицу, разделите на 10 ^ p

Dim numAsStr As String = num.ToString()
Dim p As Integer = numAsStr.Length - numAsStr.IndexOf(".") - 1
Dim numInt as Integer = 10^p * num
Dim result as Double = ((10^p *num + 1.0) / 10^p).ToString()

Для решения этой проблемы используйте конструкцию "ON ERROR RESUME NEXT".

Другие вопросы по тегам