decimal (3,1) vs smalint для поля температуры (с точностью до десятых)

M
На сайте с 20.08.2004
Offline
376
455

столкнулся с тем что php нужно напрягаться что бы работать с числами плавающей запятой. Вот решл у вас узнать с какими данными лучше работать если я буду оперировать с данными температуры.

есть несколько вариантов

- как и раньше использовать decimal (3,1) и извращаться в пхп с такими функциями как bccomp и тд

- перевести все в smalint и потом просто при выводе результатов после первого знака ставить запятую 377=>37.7 (но механизма сделать это ОЧЕНЬ просто не нашел :))

- так как темература измеряется от 35 до 42 , то по идее можно использовать поле tinyint(3), но в бд записывать данные со здвигом, например от 35 гр. Например 37.7 -> 377 -> 27. Я думаю это лучше чем первый вариант, все же + это намного проще чем тот же + с плавающей запятой. Но с другой стороны зачем парится, данных по сравнению со вторым вариантом будет не на много меньше...

Пожалуйста, подскажите что думаете вы по этому поводу?

Спасибо.

отец сыночка, лапочки дочки и еще одного сыночка
A
На сайте с 19.07.2010
Offline
130
#1
Miracle:

- перевести все в smalint и потом просто при выводе результатов после первого знака ставить запятую 377=>37.7 (но механизма сделать это ОЧЕНЬ просто не нашел :))

select field_temp/10 field_temp from table_name

.............
M
На сайте с 20.08.2004
Offline
376
#2

спасибо., я не думаю что делить это лучшее решение, да и над данными из БД, должны быть произведены определенные дейсвия, а уже потом выведены пользователю. Те перед самим выводом нужно уже приводить к результату с запятой. А то весь смысл теряется.

A
На сайте с 19.07.2010
Offline
130
#3
Miracle:
спасибо., я не думаю что делить это лучшее решение, да и над данными из БД, должны быть произведены определенные дейсвия, а уже потом выведены пользователю. Те перед самим выводом нужно уже приводить к результату с запятой. А то весь смысл теряется.

трудно не глядя давать советы :)

"над данными из БД, должны быть произведены определенные дейсвия" - в одном из проектов я использовал вычисления и округление на стороне SQL сервера, а CMS-ой просто выводил данные как есть - получилось довольно удобно. вся логика поместилась в несколько sql запросов.

я рассчитывал процентное соотношение нескольких полей и в зависимости от одного условия, а так же в зависимости от конечного результата вычисления - выводил нужным образом результат. (в общем получилось несколько IF по разным полям и несколько вычислений в них)

как поступить с данной задачей - Вам, конечно, виднее. удачи :)

M
На сайте с 20.08.2004
Offline
376
#4

спасибо. но вопрос был в другом ))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий