Охотясь на странную ошибку в моем приложении VB.NET, я разыскал ее до шокирующей загадочной детали.Вот простой тестовый код:
If 0.01 > 0.12 - 0.11 Then Debug.Print("what the hell")
0,12-0,11 - 0,01 ... Что соответствует левой части сравнения.Однако, когда я запускаю это, отладка печатает "что, черт возьми" ... Потому что серьезно, что, черт возьми.Эти числа равны.
Кроме того, если у меня есть такой цикл:
Dim count As Integer = 0
For i As Double = 0.11 to 0.12 Step 0.01
count += 1
Next
Debug.Print(count)
Он печатает 1, что означает, что цикл выполняется только один раз, в то время как он должен выполняться дважды.
Удивительно, но если я изменил 0.11, 0.12 и 0.01 в приведенных выше примерах на 0.1, 0.2 и 0.1, то в первом примере ничего не печатается, а во втором примере 2, как и должно быть.
Что здесь происходит?Я упускаю что-то невероятно очевидное, или это какая-то ошибка с плавающей запятой или что-то в этом роде?