Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/32: Рейтинг темы: голосов - 32, средняя оценка - 4.66
4 / 0 / 2
Регистрация: 07.12.2009
Сообщений: 39
1

Как округлить число до 15 знаков после запятой

08.11.2012, 19:11. Показов 5732. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеем, число tmp=-1,90413462841146E+37. Не могу округлить до 15 знаков после запятой к примеру. Round(tmp, 15) возвращает -1,90413462841146E+37 =( почему так и как округлить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2012, 19:11
Ответы с готовыми решениями:

Как округлить чтоб было 5 символов после запятой
otv = 1.121254 + 1.2454542 'это просто для примера Label1.Caption = "Ответ = " & otv Как сделать...

Как ограничить количество знаков после запятой?
возникли сложности в том что в ответе в форме Picture4.Print arifmeticheskoe_index не знаю как...

Количество знаков после запятой
Из Sql server'a возвращаю рекордсет в котором, в поле, есть число '0,21', а во флексе отображается...

Округление числа до 4 знаков после запятой
При табуляции как сделать при Y, чтобы после запятой было 4 знака?

7
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,223
08.11.2012, 20:31 2
Потому что 37+15 = 52
Это почти вдвое больше максимальнодопустимого числа знаков
Переменные типа Decimal сохраняются как 96-разрядные (12-байт) целые без знака, масштабируемые степенями 10. Степень масштабирования определяет число знаков дробной части, которое может изменяться от 0 до 28. Для степени масштабирования 0 (числа без дробной части), максимальными по абсолютной величине значениями являются +/-79*228*162*514*264*337*593*543*950*335. При 28 знаках дробной части максимальными по абсолютной величине значениями являются +/-7,9228162514264337593543950335, а минимальными +/-0,0000000000000000000000000001.

Примечание. В настоящее время поддерживается использование типа данных Decimal только в пределах типа Variant, т.е. невозможно описать переменную с типом Decimal. Пользователь, однако, имеет возможность создать переменную типа Variant с подтипом Decimal с помощью функции CDec.
Откуда такие числа? Как получены?
Как выриант(если такое возможно в программе) записывать число как строку и обрабатывать как строку посимвольно
Имеются калькуляторы больших чисел. Там именно такой способ применяется
1
Заблокирован
08.11.2012, 20:50 3
Visual Basic
1
MsgBox Format$(tmp, "0." & String$(15, "0")) '-19041346284114600000000000000000000000,000000000000000
Extremo, какой смысл в таком округлении - значащих цифр в числе по любому больше не станет
0
4 / 0 / 2
Регистрация: 07.12.2009
Сообщений: 39
08.11.2012, 20:52  [ТС] 4
Спасибо за ответ) Вопрос о том, откуда такие числа, натолкнул на проверку исходной функции, в следствие чего, выяснил, что та имеет точку разрыва и около неё(точки) происходит "взлёт" значений. Тему можно закрывать
0
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.11.2012, 10:42 5
Вот функция, мож кому пригодится
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function RoundExp(d As Double, Optional n As Long = 0) As Double
 
'Округляет до заданного числа цифр после десятичной точки
'в экспоненциальном представлении числа
 
Dim p#
p = 10 ^ Int(Log(Abs(d)) / Log(10#))
RoundExp = Round(d / p, n) * p
End Function
 
Sub test()
Dim tmp#
tmp = -1.90413462841146E+37
Debug.Print RoundExp(tmp, 3), RoundExp(tmp) '-1,904E+37    -2E+37
tmp = -1.90413462841146E-37
Debug.Print RoundExp(tmp, 3), RoundExp(tmp) '-1,904E-37    -2E-37
End Sub
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37317 / 20750 / 4273
Регистрация: 12.02.2012
Сообщений: 34,145
Записей в блоге: 14
09.11.2012, 16:47 6
Я думаю, что никак (точность double = 15 знач. цифр)
0
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,223
10.11.2012, 15:04 7
Цитата Сообщение от Catstail Посмотреть сообщение
Я думаю, что никак (точность double = 15 знач. цифр)
Имеются калькуляторы больших чисел.
Лично я писал такой калькулятор на 4 арифметических действия.
Числа были до 100 знаков. Результат до 200 знаков.
Там не было большой проблемы добавить округление до любого количества знаков
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37317 / 20750 / 4273
Регистрация: 12.02.2012
Сообщений: 34,145
Записей в блоге: 14
10.11.2012, 17:17 8
Цитата Сообщение от Alex77755 Посмотреть сообщение
Имеются калькуляторы больших чисел.
- верю, но в этом калькуляторе другая арифметика.А интеловское double "держит" 15-16 знаков. Кстати, мой опыт показывает, что подобная "ловля блох" должна иметь очень веские основания.
0
10.11.2012, 17:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2012, 17:17
Помогаю со студенческими работами здесь

Округление до двух знаков после запятой
Подскажите пожалуйста. Есть число и много знаков после запятой. Нужно оставить 2. Пишу...

Как округлить число до 2-х знаков после запятой?
Всем привет! Поможите, люди добрые... Знаю что вопрос мой не нов, но мне от этого не легче... Я...

Как округлить число до 2 знаков после запятой?
Как округлить число до 2 знаков после запятой?.

Как округлить число до двух знаков после запятой
Здравствуйте в типе decimal заметил что в некоторых случаях после запитой набирается несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru