|
|
|
тип numeric(15,2)
|
|||
|---|---|---|---|
|
#18+
в базе есть поле Actual типа numeric(15,2) По идее все что после второго знака должно отбрасываться. делаю селект с DisplayFormat=0.000000000000 и получаю значения типа 12.000000000002 15.240000000001 и подобные в в условиях WHERE Actual=17.25 вообще обман полный как это объяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2003, 14:11 |
|
||
|
тип numeric(15,2)
|
|||
|---|---|---|---|
|
#18+
Значения ты просматриваешь на клиенте, написанном на ...? Чему удивляться-то? А вот почему в select ... where actual=17.25 понять труднее. Как я понимаю, оно должно обрабатываться на сервере. Вожможно при выполнении сравнения число 17.25 не представляется в формате numeric? Т.е. сравнивается твой numeric c не с 17.25 , а с 17.2500001, например. Я рефлекторно стараюсь обходится без конструкций вида если <переменная>=<число типа real> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2003, 15:38 |
|
||
|
тип numeric(15,2)
|
|||
|---|---|---|---|
|
#18+
мне пришлось решить эту проблему несколькими способами WHERE Actual BETWEEN (a-0.001) AND (a+0.001) WHERE Round(Actual,2)=a WHERE Abs(Actual-a)<0.001 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2003, 15:56 |
|
||
|
тип numeric(15,2)
|
|||
|---|---|---|---|
|
#18+
я обычно решаю такую проблему первым способом "WHERE Actual BETWEEN (a-0.001) AND (a+0.001)". Остальные два хуже тем что в случае наличия индекса по полю Actual (ну мало ли придется поставить) поиск по нему не пойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 04:41 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32294752&tid=1579816]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
387ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 641ms |

| 0 / 0 |
