|
v7: 1SQLite. Деление, типизация | ☑ | ||
---|---|---|---|---|
0
Asakra
11.12.14
✎
13:21
|
Кто использует 1SQLite выполните у себя код! Весьма неожиданный результат :(
База = СоздатьОбъект("SQLiteBase"); База.Открыть(":memory:"); Запрос = База.НовыйЗапрос(); Сообщить("1/50="+Запрос.ВыполнитьЗапрос("SELECT 1/50").ПолучитьЗначение(1,1)); |
|||
1
cincout
11.12.14
✎
13:30
|
у меня комп после такого взорвался. (0) мне должен новый комп!
|
|||
2
Kain_wrath
11.12.14
✎
13:34
|
у меня кошка после этого умерла. (0)мне должен новую кошку!
|
|||
3
orefkov
11.12.14
✎
13:35
|
На чистом sqlite:
SQLite version 3.8.2 2013-12-06 14:53:30 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select 1/50; 0 sqlite> select 1/50.0; 0.02 sqlite> |
|||
4
orefkov
11.12.14
✎
13:36
|
sqlite> select 1/(50+0.0);
0.02 |
|||
5
Asakra
11.12.14
✎
13:39
|
(4) пасиб. я так сделал "SELECT 1/cast(50 as double)". пойду делать как у вас :)
|
|||
6
Asakra
11.12.14
✎
13:41
|
(1+0.0)/50 тоже фурычит
|
|||
7
orefkov
11.12.14
✎
13:44
|
(5)
cast - идеологически правильнее, скорее всего. (6) Достаточно одному из операндов быть с плавающей точкой, чтобы все выражение считалось с плавающей точкой. Иначе все считается в целых числах. Сишники знают :) |
|||
8
orefkov
11.12.14
✎
13:46
|
+(7)
Ну и эта, деньги аккуратнее считай в sqlite, все таки double не numeric на самом деле, возможны казусы. |
|||
9
Asakra
11.12.14
✎
13:48
|
(7) иногда запрос возвращает 0.00055555, а после типизации 0. можно как то побороть? не приятно когда стоит условие <> 0
|
|||
10
Asakra
11.12.14
✎
13:51
|
делаю условие, например >= 0.01 или <= 0.01 (зависит от знаков после запятой)
может как-то красивше можно? |
|||
11
Asakra
11.12.14
✎
13:53
|
(8) спасибо! учту.
|
|||
12
compors
11.12.14
✎
14:02
|
(8) > Ну и эта, деньги аккуратнее считай в sqlite, все таки double не numeric на самом деле, возможны казусы.
А вобще есть СУБШ-ки которые нормально моей обсчитывают? |
|||
13
Ёпрст
11.12.14
✎
14:05
|
(0) так делает не только скульлайт, фокс тоже этим "грешит"
|
|||
14
Asakra
11.12.14
✎
14:06
|
(13) век живи, век учись...
|
|||
15
Ёпрст
11.12.14
✎
14:07
|
Да, снеговик - тоже..
|
|||
16
Ёпрст
11.12.14
✎
14:08
|
Ну, в смысле на tsql тоже
|
|||
17
orefkov
11.12.14
✎
14:08
|
(10)
Красивее считать все в целых копейках :) А вес в граммах. И то приходится при делении учитывать округление. |
|||
18
Asakra
11.12.14
✎
14:09
|
(17) ок. понял.
|
|||
19
Ёпрст
11.12.14
✎
14:09
|
на голом скуле
select 1/5 результат 0 |
|||
20
Asakra
11.12.14
✎
14:20
|
(15) 1/5 в файловой фурычит
|
|||
21
Asakra
11.12.14
✎
14:46
|
(17) ни фига. тогда нужно делать условие >=1 or <=-1
|
|||
22
Ёпрст
11.12.14
✎
14:49
|
(20) файловую, не пользуем, на скуле будет как в (19)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |