powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема округления Single в Excel
16 сообщений из 16, страница 1 из 1
Проблема округления Single в Excel
    #33647873
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Привет всем!

Возникла проблема такого рода.
В результате математических операций я получаю ряд чисел типа Single, где ещё куча знаков после запятой, а мне надо только три. Использую функцию Round, но эффект не впечатляет: в ячейках получаются числа типа: 5,85500001395478, а не 5,855 как планировалось. Что делать?


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #33647911
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Sub f()
    Dim a As Single
    a =  5 . 85500001395478 
    Cells( 1 ,  1 ).Value = Round(CDbl(a),  3 )
End Sub
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #33647926
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Сенкс! Так почему-то работает.


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #33647947
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и так работает
Код: plaintext
    Cells( 2 ,  1 ).Value = Round(CStr(a),  3 )
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #33648376
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще работает "точность как на экране".
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #33648433
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeЕще работает "точность как на экране".

неправда не работает
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #33650200
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor big-dukeЕще работает "точность как на экране".
неправда не работает
Работает :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проблема округления Single в Excel
    #34927127
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl vkodor big-dukeЕще работает "точность как на экране".
неправда не работает
Работает :)
Действительно работает
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34927190
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Sub test()
    Debug.Print VBA.Round( 129 . 525 ,  2 )
    Debug.Print WorksheetFunction.Round( 129 . 525 ,  2 )
End Sub

Может кто-нибудь разяснит почему разные результаты?
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34927267
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже косяк
Причём ладно бы сказать что VBA не умеет правильно округлять, но он ведь умеет
Код: plaintext
Debug.Print CDbl(Format( 3 . 1265 , "#.###"))
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34927272
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так неправильно
Код: plaintext
    Debug.Print VBA.Round( 3 . 1265 ,  3 )
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34927623
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плохие грабли
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34929525
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad,
vkodor,
число 3,1265 не является представимым в виде конечной дроби в двоичной системе счисления (классический пример: 0,1 10 =0,00(0011) 2 ). Число 3,1265, переведённое в двоичную систему, хранящееся в double (и имеющее конечное представление), примерно на 2 в минус пятьдесят какой-то степени меньше записанного человеком в десятичной системе. Отсюда и результат VBA.Round(3.1265, 3) - она работает с готовым double-м. Другие функции могут работать с числом в десятичном представлении.

Предполагается, что основы вычислительной математики изучал любой программист. Я не прав? ;-)
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34929558
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor
Код: plaintext
1.
2.
3.
Sub test()
    Debug.Print VBA.Round( 129 . 525 ,  2 )
    Debug.Print WorksheetFunction.Round( 129 . 525 ,  2 )
End Sub

Может кто-нибудь разяснит почему разные результаты?Это разные функции. Первая принадлежит VBA, вторая самому Экселю.
Вот тебе еще один макрос для игр:
Код: plaintext
1.
2.
3.
Sub test()
    Debug.Print VBA.Round( 129 . 525 ,  2 )
    Debug.Print VBA.Round( 129 . 525000001 ,  2 )
End Sub
Да VBA функция глючит, никаких сомнений. Откуда у этого глюка ноги растут - Бенедикт уже расписал, но почему в Excel это все учли а в VBA не учли? Патамучта.
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34929559
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктПредполагается, что основы вычислительной математики изучал любой программист. Я не прав? ;-)не прав. Это не предполагается, это аксиома :)
...
Рейтинг: 0 / 0
Проблема округления Single в Excel
    #34929770
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl БенедиктПредполагается, что основы вычислительной математики изучал любой программист. Я не прав? ;-)не прав. Это не предполагается, это аксиома :)
тока в разделе МикрософтОфис далеко не все програмисты
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема округления Single в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]