собственно сами данные еще приличные, но вот результат вычисления уже больше 16-ти разрялов потому и "нагло врот". А хочется получить результаты расчета в десячичном представлении правильными и не в единичном случае, а в большой таблице. Может кто уже "воевал" с такой проблемой?
есть ли возможность в Excel суммировать числа больше 16-то разрядов?
06.10.2016 09:04:49
|
|
|
|
06.10.2016 09:17:17
Собирать число из ячеек и делить по ячейкам. Но что это будет?
|
|
|
|
06.10.2016 09:18:59
Или возможно как текст вывести, если отчет только для просмотра нужен.
Когда испробованы все варианты, я начинаю плясать с бубном. Как правило — помогает.
|
|
|
|
06.10.2016 09:20:34
Без длинной арифметики здесь не обойтись - тип Double, которым считает Excel, не может дать большего количества значащих цифр.
|
|
|
|
06.10.2016 09:32:25
Decimal не годится (нет такого)
А вот Currency можно пробовать, проверьте результат: s : 12517996299717.3506 : Currency Правда не вполне понятно откуда взялось 06... Промежуточное округление не помогает...
Изменено: |
|
|
|
06.10.2016 10:16:33
Типа переменной такого нет. Т.е. as decimal не работает.
А вот так и впрямь работает:
Изменено: |
|||
|
|
06.10.2016 11:04:56
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
07.10.2016 09:53:43
|
|||
|
|
07.10.2016 10:43:41
Можно пробовать использовать в UDF и писать на лист текстом:
Говорят в VBA уже 12 бит отводится для decimal, но какой точно будет предел вычисления я не нагуглил. |
|||
|
|
07.10.2016 11:00:43
Вы про
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
07.10.2016 11:15:27
В некоторых источниках пишут про 14 байт для VBA.
"С версии 5.0 поддерживается использование типа данных Decimal только в пределах типа Variant, т.е. невозможно описать переменную с типом Decimal. Пользователь, однако, имеет возможность создать переменную типа Variant с подтипом Decimal с помощью функции CDec." Как Hugo и показал.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
07.10.2016 11:22:19
Да, конечно я думал 12 байт: " and the general purpose 16 byte Variant data type can be converted to a 12 byte Decimal data type using the VBA conversion function CDec."
Спасибо за ссылку на MSDN, только как это будет работать в VBA нужно вероятно проверять, явно нигде не указано. Что значит "в пределах типа Variant"? |
|
|
|
07.10.2016 11:30:34
Значит объявлять как DIM ... as Variant и потом работать через CDec (как вы и показали), DIM ... as Decimal в отличии от VB.NET в VBA нельзя объявить.
Но нужно иметь ввиду, этот тип не стандартный, т.е. Long, Double (и еще куча стандартных) - работают напрямую с аппаратной частью при проведении арифметических операций, в Decimal все делается программно, поэтому медленнее.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
07.10.2016 11:35:39
Вот к примеру код перевода числа из одного основание в другое с использованием этого типа:
«Бритва Оккама» или «Принцип Калашникова»?
|
||||
|
|
|||