|
|
|
Про округление
|
|||
|---|---|---|---|
|
#18+
Проблема в следующем: делаю выборку из xls таблицы, например: select round([data$summa.F1],2) from [data$summa] (через ADO, провайдер MSDASQL, драйвер MS Excel Driver ) получаю следующую картину: при значении data$summa.F1 равное, к примеру, 0.625 получаю 0.62, т.е. округление на граничном значении идет в меньшую сторону. Решил прибавить 0.001, а потом округлять: select round([data$summa.F1]+0.001,2) from [data$summa] имеем: значение равное 0.484408 +0.001=0.485408 и оно округляет вот так: 0.49, а хотелось 0.48 ( Можно вообще как-то установить в драйвере (например, при подключении) это самое округление? Спасибо за внимание... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 08:15 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 10:58 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
gardenman Код: plaintext 1. 2. 3. 4. Нет, вопрос был не о том как написать функцию округления (слава Богу, это еще умеем), а как заставить драйвер (MS Excel Driver) правильно округлять значения в запросе select round(...)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 17:47 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
Какой тип данных в поле F1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 18:08 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
Не знаю, что делать с excel, но обычно в базах есть такие возможности округления: TRUNC(<number> + 0.5e-2, 2) Это будет работать для положительных чисел. В более общем случае: TRUNC(<number> + SIGN(<number>) * 0.5e-2, 2) Кроме того, мне кажется, есть вероятность, что твой ROUND работает правильо, а просто число 0.624999999.... отображается как 0.625 и раундится в 0.62, что так и должно быть. Это тоже стоит проверить, например таким образом: SELECT ROUND(0.625, 2) FROM ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 21:13 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
maytonКакой тип данных в поле F1 ? Тип - числовой. На самом деле я пытаюсь округлить произведение двух полей, например, select round(data$summa.F1*data$summa.F2,2) (все поля -числовые) На калькуляторе вычисляю произведение получаю 0.625 (3 знака после запятой). В самом Excel'e вычисляю произведение этих двух ячеек (с округлением) - получаю 0.63. Вообщем, так и сделал: доп. колонку с вычислением округленного произведения и ее уже выбираю в запросе, например select data$summa.F3 from data$summa Вот и доверяй после этого расчеты драйверу... А может все-таки это как-то лечится ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 08:30 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
Alex_VC Тип - числовой. На самом деле я пытаюсь округлить произведение двух полей... А может все-таки это как-то лечится ? Числовые говоришь - это хорошо... а случаем не float ? где-то стоит не та разрядность... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 09:47 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
olol Alex_VC Тип - числовой. На самом деле я пытаюсь округлить произведение двух полей... А может все-таки это как-то лечится ? Числовые говоришь - это хорошо... а случаем не float ? где-то стоит не та разрядность... А как в Excel'е задать числовой тип (float, double, long double,...) ? Что-то я не встречал такой фичи... Есть там возможность форматированного вывода на экран, но внутреннее представление от этого все равно не меняется... А сам числовой результат в приложении сохраняется в переменной типа double . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 10:48 |
|
||
|
Про округление
|
|||
|---|---|---|---|
|
#18+
Alex_VC А как в Excel'е задать числовой тип (float, double, long double,...) ? А сам числовой результат в приложении сохраняется в переменной типа double . А вот и не правда ваша... В Excel'е задается тип ячейки: Общий/Числовой/Денежный/Финансовый... Я встречал где-то вопрос по финансовым округлениям... там 0.5 -> 0.0 Select Round... - где делает округление ? Явно не в приложении и не в Excel'е... а что и как делает драйвер - не известно... Попробуй сменить тип ячеек... и посмотри еще на Precision для этого поля в приложении... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 12:02 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32917563&tid=2033705]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 437ms |

| 0 / 0 |
