Увеличить последнюю цифру числа
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".