2013-11-07 4 views
0

У нас есть таблица sql с поплавочной колонкой, хранящая значения в научной нотации. У меня есть значение -1.23E-256. когда я запускаю запрос и присваиваю результаты запроса переменным, я присваиваю это значение float десятичной (15,2). Но из-за этой научной нотации значения не осваиваются переменными в программе 4gl и ошибками бросания. Я попытался использовать функции преобразования и литья, чтобы изменить эту научную нотацию на десятичные числа в запросах на выбор, но значение «бросание» и «очень мало» для хранения в десятичной форме. Я хочу получить эти переменные float из базы данных в переменные в программе 4gl в десятичном формате. Как я могу это достичь?конвертировать значение научной нотации нотации в десятичную переменную (4gl, informix)

+0

поплавок является числовым типом данных. научная нотация - это формат отображения. Все, что происходит с вами, не вызвано научной нотацией. Ваше сообщение об ошибке дает вам ценную информацию. У 4gl есть функции, которые форматируют числа? –

+0

десятичной (15,2) будет вызывать 0,00 – user2615302

ответ

2

десятичный [(p [, s])] и числовой [(p [, s])] Исправлена ​​точность и масштабные номера. При использовании максимальной точности действительные значения составляют от - 10^38 +1 до 10^38 - 1.

float - 1.79E + 308 to -2.23E-308, 0 и 2.23E-308 до 1.79E +308

Так что не possable becouse числа является малым, вы должны оставить его в поплавке

3

не совсем. Вы должны преобразовать первый плавать, а затем в десятичную или что-то другое:

select convert(decimal(15,2), convert(float, '-1.23E-256')) 

превращается в: 0.00

Так, конечно, вы потеряете значение, но, по крайней мере, он не генерирует сообщение об ошибке.

0

Согласно Wolfram Alpha величина

-1.23E-256 = -1,23 × 10^-256

Это значит, вам придется перенести десятичную запятую 256 раз. Вы пытаетесь соответствовать, что TINY число в Percision из 2. Ваш знаков после запятой 1 через 253 все будет 0-х

Таким образом, @ user2615302 является правильным, и вы должны держать его флоат

Смежные вопросы