Работа круглая ??
Не уверен, что это будет отвечать всем сценариям, но я столкнулся с проблемой сравнения округленных двойных значений в VBA. Когда я сравнивал числа, которые после округления оказались идентичными, VBA вызывал ложь в операторе сравнения if-then.
Мое исправление состояло в том, чтобы запустить два преобразования: сначала двойное в строку, затем двойное в строку, а затем выполнить сравнение.
смоделированный пример
Я не записал точные числа, которые привели к ошибке, упомянутой в этом посте, и суммы в моем примере не вызывают проблему в настоящее время и предназначены для представления типа проблемы.
Sub Test_Rounded_Numbers()
Dim Num1 As Double
Dim Num2 As Double
Let Num1 = 123.123456789
Let Num2 = 123.123467891
Let Num1 = Round(Num1, 4) '123.1235
Let Num2 = Round(Num2, 4) '123.1235
If Num1 = Num2 Then
MsgBox "Correct Match, " & Num1 & " does equal " & Num2
Else
MsgBox "Inccorrect Match, " & Num1 & " does not equal " & Num2
End If
'Here it would say that "Inccorrect Match, 123.1235 does not equal 123.1235."
End Sub
Sub Fixed_Double_Value_Type_Compare_Issue()
Dim Num1 As Double
Dim Num2 As Double
Let Num1 = 123.123456789
Let Num2 = 123.123467891
Let Num1 = Round(Num1, 4) '123.1235
Let Num2 = Round(Num2, 4) '123.1235
'Add CDbl(CStr(Double_Value))
'By doing this step the numbers
'would trigger if they matched
'100% of the time
If CDbl(CStr(Num1)) = CDbl(CStr(Num2)) Then
MsgBox "Correct Match"
Else
MsgBox "Inccorrect Match"
End If
'Now it says Here it would say that "Correct Match, 123.1235 does equal 123.1235."
End Sub