Работа с число, имащо хем запетая, хем точка в него

C++ JAVA
Illusion
Турист
Турист
Posts: 237
Joined: Sun Mar 14, 2010 2:07 pm

Работа с число, имащо хем запетая, хем точка в него

Post by Illusion » Thu Sep 27, 2012 2:17 pm

Здравейте.

Наложи ми се да запиша числото „1,546.0“ в базата данни така, както е, обаче то реално се записа като 1… Въпроса ми е как да запиша цялото число, както си е — 1,546.0? Полето, в което се записва то е INT, но като го направя примерно VARCHAR или просто TEXT, пак си се записва като единица.

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Thu Sep 27, 2012 2:19 pm

Промени полето в БДто на varchar и си провери като го взимаш в скрипта ти как го взимаш, да не би там да го правиш int.

Illusion
Турист
Турист
Posts: 237
Joined: Sun Mar 14, 2010 2:07 pm

Post by Illusion » Thu Sep 27, 2012 2:21 pm

Radko wrote:Промени полето в БДто на varchar и си провери като го взимаш в скрипта ти как го взимаш, да не би там да го правиш int.
Числото идва от тук (hoursOnRecord по-конкретно). Не го променям с никаква функция — добавям го към базата данни така, както ми е предоставено „уж“. Предоставя ми се като 1,546.0, но пък се добавя като единица.

madmax3_
Турист
Турист
Posts: 341
Joined: Mon Jan 10, 2011 4:08 pm
Answers: 32
Contact:

Post by madmax3_ » Thu Sep 27, 2012 3:13 pm

Опитай така:

INSERT INTO DB (`ime_na_poleto`) VALUES ('1,2345.678')

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Thu Sep 27, 2012 6:31 pm

Illusion wrote:
Radko wrote:Промени полето в БДто на varchar и си провери като го взимаш в скрипта ти как го взимаш, да не би там да го правиш int.
Числото идва от тук (hoursOnRecord по-конкретно). Не го променям с никаква функция — добавям го към базата данни така, както ми е предоставено „уж“. Предоставя ми се като 1,546.0, но пък се добавя като единица.
Я все пак дай частта от кода където го взимаш от хмл-а и заявката за инсерт.

User avatar
IzKuFeLiQqQqQ
Много Редовен
Много Редовен
Posts: 1667
Joined: Sun Jun 28, 2009 1:24 pm
Answers: 141
Contact:

Post by IzKuFeLiQqQqQ » Thu Sep 27, 2012 7:42 pm

Полето... в базата... не трябва ли да е double/float за да запише число с плаваща запетая? :)

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Thu Sep 27, 2012 7:47 pm

Не, защото числото не е нито дабъл нито флоат има и точка и запетайка. Трябва да е или варчар или текст

User avatar
StormBreaker
Шаман
Шаман
Posts: 5210
Joined: Mon Mar 05, 2007 8:08 pm
Answers: 344

Post by StormBreaker » Thu Sep 27, 2012 8:10 pm

Radko wrote:Не, защото числото не е нито дабъл нито флоат има и точка и запетайка. Трябва да е или варчар или текст
Според мен е добре да махне запетаята и да си запише числото като число.

Radko
Потребител
Потребител
Posts: 651
Joined: Mon Jun 18, 2007 2:22 pm
Answers: 87
Location: София

Post by Radko » Fri Sep 28, 2012 3:30 am

StormBreaker wrote:
Radko wrote:Не, защото числото не е нито дабъл нито флоат има и точка и запетайка. Трябва да е или варчар или текст
Според мен е добре да махне запетаята и да си запише числото като число.
Така е. Но това не променя факта че някъде се губят и запетайката и точката и записва само единицата.

Според мен е в скрипта, затова нека автора го даде да хвърлим един поглед.

User avatar
eLite
Потребител
Потребител
Posts: 967
Joined: Mon Apr 07, 2008 8:08 pm
Answers: 59
Location: София

Post by eLite » Fri Sep 28, 2012 8:07 am

Radko wrote:
StormBreaker wrote:
Radko wrote:Не, защото числото не е нито дабъл нито флоат има и точка и запетайка. Трябва да е или варчар или текст
Според мен е добре да махне запетаята и да си запише числото като число.
Така е. Но това не променя факта че някъде се губят и запетайката и точката и записва само единицата.

Според мен е в скрипта, затова нека автора го даде да хвърлим един поглед.
Записва го като 1 само защото:
1. Tипа на полето е INTEGER.
2. Запетайката не е разделител.
Най адекватното решение би било да се премахне напълно запетайката и типа на полето да се смени на FLOAT/DOUBLE.

В случая 1,546.0 ще бъде 1546.0 и ще са абсолютно еднакви в контекста.

Post Reply