#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))