|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Какая функция позволяет округлить до второго знака после запятой. INT, RND похоже округляют до целой части. Может мне как-то FORMAT надо использовать, но я никак не могу прекинуть с какой маской, и как потом полученое число мне использовать в вычислениях - оно-ж текстовым станет :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2002, 10:44 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Round() ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2002, 11:33 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Не нашел такую... Зато вот как получилось FORMAT(112340.2355235,"###00.00")*100 >>11234024 Все как надо ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2002, 11:37 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Удивительно Господа. Но я тоже не нашел функции округления. Пришлось писать самому :-)))) Глупость полная и тем не менее пришлось. Конечно не так, как в предыдущем варианте. Если интересно, могу прислать код. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 16:20 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Не надо ничего изобретать. все уже сделали до Вас. Public Function okrug( _ Number As Variant, NumDigits As Long) As Double Dim dblPower As Double Dim varTemp As Variant Dim intsgn As Integer If Not IsNumeric(Number) Then okrug = 0 Exit Function 'Err.Raise 5 End If dblPower = 10 ^ NumDigits intsgn = Sgn(Number) Number = Abs(Number) varTemp = CDec(Number) * dblPower + 0.5 okrug = intsgn * Int(varTemp) / dblPower End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 16:49 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Цетирую Хелп Аккеса ХР: Round(expression [,numdecimalplaces]) Цетирую BOL MSSQL2000: ROUND ( numeric_expression , length [ , function ] ) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 16:57 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
наивныя. round(9.575,2)=9.57, а должно быть 9.58 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 17:04 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
причем эта ошибка описана в хелпе к А97. если число нечетное до 5, то есть 9.97 5 то округляет до 9,97, а если 9.98 5 то будет 9,99. вот такие пироги ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 18:52 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
' ' Функция округления до указанного десятичного знака после запятой. ' Function Around(VOL As Double, SIGN As Byte) As Double ' VOL - округляемое значение. ' SIGN - число дес. знаков после запятой Dim COEFF As Variant, KP As Double, SM As Double COEFF = Array(1, 10, 100, 1000, 10000, 100000, 1000000) SM = Fix(VOL) ' Выделение целой части. KP = (VOL - SM) * COEFF(SIGN) ' Выделение дробной части. If (Int(KP * 10.000000000001)) Mod 10 >= 5 Then KP = KP + 1 Around = SM + CDbl(Fix(KP)) / COEFF(SIGN) ' Формирование конечного результата. End Function Этот дибилизм писался для A97, который вообще считать не умеет правильно и допускает ошибки уже начиная с 4 знака после запятой. Программа абсолютно рабочая, хоть и имеет некоторые ограничения. Прошу не критиковать ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2002, 14:36 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
А можно по-подробнее, на примере, где A97 "не умеет считать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2002, 15:34 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Для IgorM. Надо сказать, что подобные невероятные вещи, как неверные арифметические расчёты, оказались свойственны не только A97, но AccessXP (A2002). Ошибки выявлялись исключительно в операциях с плавающей точкой. Вычисления в SQL-запросах - всё великолепно. Совпадают с вычислениями штатного виндового калькулятора (брался, как эталон вычислений;-))) Вычисления в модулях - полный бред, как я уже говорил, начиная с 4 знака после запятой. Более того, обнаруживались досадные ошибки в функциях Int и Fix. В частности, посмотрите, как мне пришлось извращаться, чтобы обмануть аксес: ' Выделение целой части. SM = Fix(SummaDbl) ' Выделение дробной части. SummaDbl = CDbl(SummaDbl) * 100# KP = SummaDbl - SM * 100# Знаете, почему я написал выделение дробной части вот так. А потому, что софт при некоторых значениях возвращал данные, отличающиеся на 1. К примеру. Раскладываем число 19.94 В переменную SM ложится значение 19. А в переменную KP - 93 !!! (Это если закомментарить вторую строку кода). Это пример. Я не помню точно, какие числа. Но факт остаётся фактом. Весь прогрессивный коллектив наблюдал лично своими глазами стоки отладчика. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2002, 15:56 |
|
Округление до 2 знака в SQL?
|
|||
---|---|---|---|
#18+
Ну, кто же с такой точностью в Double считает... Да еще при этом пользуется Fix'ом... :) Это даже в фидошном FAQ'e по MSA идет первым вопросом (http://www.df.ru/~swan/faq.htm). Да и хелп рекомендует Currency. Попробуйте вот так: Код: plaintext 1. 2. 3.
P.S. Хотя, Ваша критика в адрес MSA в общем-то справедлива. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2002, 22:19 |
|
|
start [/forum/topic.php?fid=45&msg=32056659&tid=1683095]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 306ms |
total: | 455ms |
0 / 0 |