Excel VBA, разделяющий десятичные дроби, делает ответ слишком большим в 100 раз

#excel #vba

#excel #vba

Вопрос:

У меня странная проблема при попытке разделить на число с десятичными дробями в Excel VBA (2016)

 Dim a As Double
Dim b As Double
Dim result As Double

a = 0.55
b = 16.8

result = a / b

MsgBox (result)
MsgBox (0.55 / 16.8)
 

В обоих текстовых сообщениях отображается 3.2738 …. правильный ответ должен быть 0.0327….

Если я удалю десятичный знак из b, произведя вычисление 0,55 / 16, он покажет правильный ответ 0,0343…

Акт деления на десятичное число, по-видимому, делает ответ слишком большим в 100 раз.

Что происходит?

Я пробовал то же самое VB.NET на моем компьютере, и он работает правильно, поэтому я не думаю, что это проблема системы / локали.

Комментарии:

1. Разве вы не заметили E-02 в конце: 3.27380952380952E-02 ?

2. я сделал, я предположил, что это было только потому, что числа продолжались вечно, я подозреваю, что вы собираетесь сказать мне иначе….

3. E-02 эквивалентно *10^-2 , т. Е. 3.27380952380952E-02 Эквивалентно 0.0327380952380952 , перемещая десятичную точку на два места влево. Так что ошибок / проблем вообще нет. Подробнее читайте E Notation в разделе » Научная нотация «.

4. Я этого не знал, приветствия.

Ответ №1:

Чтобы получить более интуитивно понятный результат:

 Sub qwerty()

    Dim a As Double
    Dim b As Double
    Dim result As Double
    
    a = 0.55
    b = 16.8
    
    result = a / b
    
    MsgBox (Format(result, "0.000000"))

End Sub
 

введите описание изображения здесь

Комментарии:

1. Спасибо, теперь я понимаю.

Ответ №2:

Нет, это не дает вам очень большого результата, просто не округляет ответ

попробуйте это

   Dim a As Double
  Dim b As Double
  Dim result As Double

  a = 0.55
  b = 16.8

  result = a / b

  MsgBox (Round(result, 10))