Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Округление до 2 знака в SQL? / 13 сообщений из 13, страница 1 из 1
09.10.2002, 10:44
    #32056640
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Какая функция позволяет округлить до второго знака после запятой. INT, RND похоже округляют до целой части. Может мне как-то FORMAT надо использовать, но я никак не могу прекинуть с какой маской, и как потом полученое число мне использовать в вычислениях - оно-ж текстовым станет :(
...
Рейтинг: 0 / 0
09.10.2002, 11:33
    #32056659
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Round()
...
Рейтинг: 0 / 0
09.10.2002, 11:37
    #32056664
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Не нашел такую...
Зато вот как получилось
FORMAT(112340.2355235,"###00.00")*100
>>11234024
Все как надо
...
Рейтинг: 0 / 0
17.10.2002, 16:20
    #32059308
Kourdikov Sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Удивительно Господа. Но я тоже не нашел функции округления. Пришлось писать самому :-))))
Глупость полная и тем не менее пришлось.

Конечно не так, как в предыдущем варианте. Если интересно, могу прислать код.
...
Рейтинг: 0 / 0
17.10.2002, 16:49
    #32059330
ДиД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Не надо ничего изобретать. все уже сделали до Вас.
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
...
Рейтинг: 0 / 0
17.10.2002, 16:57
    #32059337
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Цетирую Хелп Аккеса ХР:
Round(expression [,numdecimalplaces])

Цетирую BOL MSSQL2000:
ROUND ( numeric_expression , length [ , function ] )
...
Рейтинг: 0 / 0
17.10.2002, 17:04
    #32059343
ДиД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
наивныя. round(9.575,2)=9.57, а должно быть 9.58
...
Рейтинг: 0 / 0
17.10.2002, 18:52
    #32059407
sFx_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
причем эта ошибка описана в хелпе к А97. если число нечетное до 5, то есть 9.97 5 то округляет до 9,97, а если 9.98 5 то будет 9,99. вот такие пироги
...
Рейтинг: 0 / 0
18.10.2002, 14:36
    #32059706
Kourdikov Sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
'
' Функция округления до указанного десятичного знака после запятой.
'
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 знака после запятой.
Программа абсолютно рабочая, хоть и имеет некоторые ограничения.
Прошу не критиковать ;-)
...
Рейтинг: 0 / 0
18.10.2002, 15:34
    #32059778
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
А можно по-подробнее, на примере, где A97 "не умеет считать"?
...
Рейтинг: 0 / 0
18.10.2002, 15:56
    #32059800
Kourdikov Sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Для 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 !!!
(Это если закомментарить вторую строку кода).
Это пример. Я не помню точно, какие числа. Но факт остаётся фактом. Весь прогрессивный коллектив наблюдал лично своими глазами стоки отладчика. :-)
...
Рейтинг: 0 / 0
18.10.2002, 22:19
    #32059925
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
Ну, кто же с такой точностью в Double считает... Да еще при этом пользуется Fix'ом... :) Это даже в фидошном FAQ'e по MSA идет первым вопросом (http://www.df.ru/~swan/faq.htm).
Да и хелп рекомендует Currency. Попробуйте вот так:

Код: plaintext
1.
2.
3.
 Dim sm As Long, kp As Currency, SummaDbl As Currency
 SummaDbl =  19 . 94 
 sm = Fix(SummaDbl)
 kp = SummaDbl - CCur(sm)

P.S. Хотя, Ваша критика в адрес MSA в общем-то справедлива.
...
Рейтинг: 0 / 0
23.10.2002, 11:39
    #32061099
denche
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округление до 2 знака в SQL?
в самом коде SQL можно округлить вот так:

(int(поле * 100 +0.5)/100) as ww

где 100 - до второго знака, а если до третьего то соответственно 1000 и так далее.....
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Округление до 2 знака в SQL? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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