Странность UDF?
Serge_007
Дата: Вторник, 06.09.2011, 16:13 |
Сообщение № 1
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Всем доброго дня. Написал простую функцию, которая вычетает НДС из числа: [vba]Код
Function БЕЗ_НДС(Значение As Integer) As Integer БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Почему в ячейке D3 она работает, а в D2 - нет?
Всем доброго дня. Написал простую функцию, которая вычетает НДС из числа: [vba]Код
Function БЕЗ_НДС(Значение As Integer) As Integer БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Почему в ячейке D3 она работает, а в D2 - нет? Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Всем доброго дня. Написал простую функцию, которая вычетает НДС из числа: [vba]Код
Function БЕЗ_НДС(Значение As Integer) As Integer БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Почему в ячейке D3 она работает, а в D2 - нет? Автор - Serge_007 Дата добавления - 06.09.2011 в 16:13
Hugo
Дата: Вторник, 06.09.2011, 16:18 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация:
792
±
Замечаний:
0% ±
365
[vba]Код
Function БЕЗ_НДС(Значение As Double) As Double БЕЗ_НДС = Значение / 1.18 End Function
[/vba] хотя As Long тоже работает. А Integer маловато...
[vba]Код
Function БЕЗ_НДС(Значение As Double) As Double БЕЗ_НДС = Значение / 1.18 End Function
[/vba] хотя As Long тоже работает. А Integer маловато... Hugo
webmoney: E265281470651 Z422237915069 USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
Ответить
Сообщение [vba]Код
Function БЕЗ_НДС(Значение As Double) As Double БЕЗ_НДС = Значение / 1.18 End Function
[/vba] хотя As Long тоже работает. А Integer маловато... Автор - Hugo Дата добавления - 06.09.2011 в 16:18
KuklP
Дата: Вторник, 06.09.2011, 16:19 |
Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Потому, что число 908600 в интегер не влазит. И почему интегер, а дробная часть? Пробуй: [vba]Код
Function БЕЗ_НДС(Значение!) As Single БЕЗ_НДС = Значение / 1.18 End Function
[/vba]
Потому, что число 908600 в интегер не влазит. И почему интегер, а дробная часть? Пробуй: [vba]Код
Function БЕЗ_НДС(Значение!) As Single БЕЗ_НДС = Значение / 1.18 End Function
[/vba] KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Ответить
Сообщение Потому, что число 908600 в интегер не влазит. И почему интегер, а дробная часть? Пробуй: [vba]Код
Function БЕЗ_НДС(Значение!) As Single БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Автор - KuklP Дата добавления - 06.09.2011 в 16:19
Serge_007
Дата: Вторник, 06.09.2011, 16:20 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Спасибо Игорь, понял свою ошибку
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Спасибо Игорь, понял свою ошибку Автор - Serge_007 Дата добавления - 06.09.2011 в 16:20
nilem
Дата: Вторник, 06.09.2011, 16:21 |
Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация:
563
±
Замечаний:
0% ±
Excel 2013, 2016
[vba]Код
Function БЕЗ_НДС(Значение As Double) As Double БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Integer - целые числа с максимальным значением 32000 (с чем-то), поэтому 908000 не воспринимается. Упс, уже лишнего. Завалили ответами
[vba]Код
Function БЕЗ_НДС(Значение As Double) As Double БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Integer - целые числа с максимальным значением 32000 (с чем-то), поэтому 908000 не воспринимается. Упс, уже лишнего. Завалили ответами nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Вторник, 06.09.2011, 16:22
Ответить
Сообщение [vba]Код
Function БЕЗ_НДС(Значение As Double) As Double БЕЗ_НДС = Значение / 1.18 End Function
[/vba] Integer - целые числа с максимальным значением 32000 (с чем-то), поэтому 908000 не воспринимается. Упс, уже лишнего. Завалили ответами Автор - nilem Дата добавления - 06.09.2011 в 16:21
Serge_007
Дата: Вторник, 06.09.2011, 16:22 |
Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Quote (nilem )
Завалили ответами
Сергей, Николай, спасибо, так тоже работает) Тема закрыта.
Quote (nilem )
Завалили ответами
Сергей, Николай, спасибо, так тоже работает) Тема закрыта. Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Quote (nilem )
Завалили ответами
Сергей, Николай, спасибо, так тоже работает) Тема закрыта. Автор - Serge_007 Дата добавления - 06.09.2011 в 16:22
KuklP
Дата: Вторник, 06.09.2011, 16:22 |
Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Игорь, ну двойная точность для подсчета копеек тоже перегиб:-)
Игорь, ну двойная точность для подсчета копеек тоже перегиб:-) KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Ответить
Сообщение Игорь, ну двойная точность для подсчета копеек тоже перегиб:-) Автор - KuklP Дата добавления - 06.09.2011 в 16:22
Hugo
Дата: Вторник, 06.09.2011, 16:25 |
Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация:
792
±
Замечаний:
0% ±
365
Да, точно, всё равно нужно до двух знаков округлять, а то потом бухгалтерия концы не сведёт
Да, точно, всё равно нужно до двух знаков округлять, а то потом бухгалтерия концы не сведёт Hugo
webmoney: E265281470651 Z422237915069 USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
Ответить
Сообщение Да, точно, всё равно нужно до двух знаков округлять, а то потом бухгалтерия концы не сведёт Автор - Hugo Дата добавления - 06.09.2011 в 16:25
Serge_007
Дата: Вторник, 06.09.2011, 16:29 |
Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Quote (Hugo )
всё равно нужно до двух знаков округлять
Значит правильнее As Single? ЗЫ Это не для бухгалтерии
Quote (Hugo )
всё равно нужно до двух знаков округлять
Значит правильнее As Single? ЗЫ Это не для бухгалтерии Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Quote (Hugo )
всё равно нужно до двух знаков округлять
Значит правильнее As Single? ЗЫ Это не для бухгалтерии Автор - Serge_007 Дата добавления - 06.09.2011 в 16:29
KuklP
Дата: Вторник, 06.09.2011, 16:35 |
Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Правильно и так и так. Сингл съест вдвое меньше памяти, вдвое быстрей и вдвое меньше грузит проц. Но для современных машин это не существенно. Из справки: Quote
Single (single-precision floating-point) variables are stored as IEEE 32-bit (4-byte) floating-point numbers, ranging in value from -3.402823E38 to -1.401298E-45 for negative values and from 1.401298E-45 to 3.402823E38 for positive values. The type-declaration character for Single is the exclamation point (!).
-3.402823E38 представляешь какая точность? Для подсчета копеек и такая не нужна.
Правильно и так и так. Сингл съест вдвое меньше памяти, вдвое быстрей и вдвое меньше грузит проц. Но для современных машин это не существенно. Из справки: Quote
Single (single-precision floating-point) variables are stored as IEEE 32-bit (4-byte) floating-point numbers, ranging in value from -3.402823E38 to -1.401298E-45 for negative values and from 1.401298E-45 to 3.402823E38 for positive values. The type-declaration character for Single is the exclamation point (!).
-3.402823E38 представляешь какая точность? Для подсчета копеек и такая не нужна. KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Вторник, 06.09.2011, 16:40
Ответить
Сообщение Правильно и так и так. Сингл съест вдвое меньше памяти, вдвое быстрей и вдвое меньше грузит проц. Но для современных машин это не существенно. Из справки: Quote
Single (single-precision floating-point) variables are stored as IEEE 32-bit (4-byte) floating-point numbers, ranging in value from -3.402823E38 to -1.401298E-45 for negative values and from 1.401298E-45 to 3.402823E38 for positive values. The type-declaration character for Single is the exclamation point (!).
-3.402823E38 представляешь какая точность? Для подсчета копеек и такая не нужна. Автор - KuklP Дата добавления - 06.09.2011 в 16:35
Hugo
Дата: Вторник, 06.09.2011, 16:40 |
Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3703
Репутация:
792
±
Замечаний:
0% ±
365
Прикольно сообщение №3 выглядит, если пост целиком смотреть
Прикольно сообщение №3 выглядит, если пост целиком смотреть Hugo
webmoney: E265281470651 Z422237915069 USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
Ответить
Сообщение Прикольно сообщение №3 выглядит, если пост целиком смотреть Автор - Hugo Дата добавления - 06.09.2011 в 16:40
KuklP
Дата: Вторник, 06.09.2011, 16:42 |
Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Quote (Hugo )
Прикольно сообщение №3 выглядит, если пост целиком смотреть
А я и не обратил внимания
Quote (Hugo )
Прикольно сообщение №3 выглядит, если пост целиком смотреть
А я и не обратил внимания KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Ответить
Сообщение Quote (Hugo )
Прикольно сообщение №3 выглядит, если пост целиком смотреть
А я и не обратил внимания Автор - KuklP Дата добавления - 06.09.2011 в 16:42
_Boroda_
Дата: Вторник, 06.09.2011, 16:43 |
Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16734
Репутация:
6534
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
А я бы написал даже так: [vba]Код
Function БЕЗ_НДС(Значение As Single) As Single БЕЗ_НДС = Round(Round(Значение, 2) / 1.18, 2) End Function
[/vba] Сначала приводим "Значение" к двум знакам после запятой, потом делим на 1,18, потом опять приводим к двум знакам
А я бы написал даже так: [vba]Код
Function БЕЗ_НДС(Значение As Single) As Single БЕЗ_НДС = Round(Round(Значение, 2) / 1.18, 2) End Function
[/vba] Сначала приводим "Значение" к двум знакам после запятой, потом делим на 1,18, потом опять приводим к двум знакам _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение А я бы написал даже так: [vba]Код
Function БЕЗ_НДС(Значение As Single) As Single БЕЗ_НДС = Round(Round(Значение, 2) / 1.18, 2) End Function
[/vba] Сначала приводим "Значение" к двум знакам после запятой, потом делим на 1,18, потом опять приводим к двум знакам Автор - _Boroda_ Дата добавления - 06.09.2011 в 16:43
KuklP
Дата: Вторник, 06.09.2011, 16:47 |
Сообщение № 14
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Саш, а смысл два раза округлять? Только тормоз лишний. К тому же на входе с большой вероятностью будет либо целое - либо и так, с двумя знаками после запятой.
Саш, а смысл два раза округлять? Только тормоз лишний. К тому же на входе с большой вероятностью будет либо целое - либо и так, с двумя знаками после запятой. KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Вторник, 06.09.2011, 16:53
Ответить
Сообщение Саш, а смысл два раза округлять? Только тормоз лишний. К тому же на входе с большой вероятностью будет либо целое - либо и так, с двумя знаками после запятой. Автор - KuklP Дата добавления - 06.09.2011 в 16:47
Serge_007
Дата: Вторник, 06.09.2011, 17:14 |
Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Quote (KuklP )
Правильно и так и так. Сингл съест вдвое меньше памяти, вдвое быстрей и вдвое меньше грузит проц...
Но правильнее сингл Всем ещё раз спасибо!
Quote (KuklP )
Правильно и так и так. Сингл съест вдвое меньше памяти, вдвое быстрей и вдвое меньше грузит проц...
Но правильнее сингл Всем ещё раз спасибо!Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Quote (KuklP )
Правильно и так и так. Сингл съест вдвое меньше памяти, вдвое быстрей и вдвое меньше грузит проц...
Но правильнее сингл Всем ещё раз спасибо!Автор - Serge_007 Дата добавления - 06.09.2011 в 17:14
RAN
Дата: Вторник, 06.09.2011, 20:10 |
Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Для этого вроде Currency предусмотрен!
Для этого вроде Currency предусмотрен! RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Для этого вроде Currency предусмотрен! Автор - RAN Дата добавления - 06.09.2011 в 20:10
KuklP
Дата: Вторник, 06.09.2011, 21:55 |
Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Андрюш, ты прав. Но тип Currency ест 64 бита по сравнению с Single 32 - bit. Хотя - в первом случае фиксированная точка, а во втором плавающая. Но поскольку еще, кажется, начиная с 486 процессоров в процессоре был предусмотрен отдельный модуль для обработки чисел с плавающей точкой, все преимущества фиксированной точки заключаются только в величине максимального обрабатываемого числа. Т.е. я хочу сказать, в зависимости от того, что нужно - выбираем нужный тип. Да и то, это критично, если таких расчетов ну очень много. Иначе, как я уже писал Цитата
для современных машин это не существенно
Андрюш, ты прав. Но тип Currency ест 64 бита по сравнению с Single 32 - bit. Хотя - в первом случае фиксированная точка, а во втором плавающая. Но поскольку еще, кажется, начиная с 486 процессоров в процессоре был предусмотрен отдельный модуль для обработки чисел с плавающей точкой, все преимущества фиксированной точки заключаются только в величине максимального обрабатываемого числа. Т.е. я хочу сказать, в зависимости от того, что нужно - выбираем нужный тип. Да и то, это критично, если таких расчетов ну очень много. Иначе, как я уже писал Цитата
для современных машин это не существенно
KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Ответить
Сообщение Андрюш, ты прав. Но тип Currency ест 64 бита по сравнению с Single 32 - bit. Хотя - в первом случае фиксированная точка, а во втором плавающая. Но поскольку еще, кажется, начиная с 486 процессоров в процессоре был предусмотрен отдельный модуль для обработки чисел с плавающей точкой, все преимущества фиксированной точки заключаются только в величине максимального обрабатываемого числа. Т.е. я хочу сказать, в зависимости от того, что нужно - выбираем нужный тип. Да и то, это критично, если таких расчетов ну очень много. Иначе, как я уже писал Цитата
для современных машин это не существенно
Автор - KuklP Дата добавления - 06.09.2011 в 21:55