Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Visual Basic: Общие вопросы > тип числа -2147483648# |
Автор: BlackSun 18.02.19, 18:11 |
Почему VB к нему старательно лепит тип Double, даже когда я явно пишу -2147483648&? При этом &H80000000 VB не трогает. |
Автор: Mikle 18.02.19, 18:30 |
Хм... похоже на баг. Так работает: CLng("-2147483648") |
Автор: BlackSun 18.02.19, 18:33 |
да работает и так: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> lCount As Long lCount = -2147483648# вопрос в том, что у меня нет каких-то фиксов или что это такое? Добавлено т.е. я пишу в коде: lCount = -2147483648 VB правит на: lCount = -2147483648# |
Автор: Mikle 19.02.19, 05:59 |
Во-первых, Long тоже подходящий, по каким признакам Double оказался ближайшим? Почему для -2147483647 ближайший Long, а для -2147483648 уже Double? Во-вторых, среда VB6 исправляет на Double даже принудительно обозначенный Long (-2147483648&), вот это я назвал багом. |
Автор: TheTrik 19.02.19, 08:07 |
Да. Насколько я понял VB6 при разборе считает - (минус) и число разными сущностями и пытается 2147483648 преобразовать в знаковый (VarI4FromStr) и получает ошибку, поэтому после он уже пытается преобразовать 2147483648 как R8. Обойти очень просто: -2147483647 - 1, но хитрыми методами можно и обойти: chk.png (, : 527) |