2009-05-28 2 views
0

Я написал небольшую функцию в C, которая почти выполняет ту же работу, что и стандартная функция `fcvt '. Как вы знаете, эта функция принимает float/double и создает строку, представляющую это число в символах ANSI. Все работает ;-)Float to String: что такое экспоненциальная часть?

Например, для номера 1.33334 моя функция дает мне строку: «133334» и настраивает специальную целочисленную переменную `decimal_part ', в этом примере будет 1, что означает, что в десятичной части всего 1 символ , все остальное - фракция.

Теперь мне любопытно, что делать стандартно C function `printf '. Он может принимать% a или% e как строку формата. Сошлюсь на% е (ссылка кайфом):

"двойной" аргумент выводится в научной нотации

[-] m.nnnnnne + хх

... Показатель всегда содержит две цифры.

Он сказал: "Экспонент всегда содержит две цифры". Но что такое экспоненту? Это главный вопрос. А также, как получить эту «экспоненту» от моей функции выше или от «fcvt».

ответ

2

Запись может быть лучше объяснить, если мы расширим е:

[-]m.nnnnnn * (10^xx) 

Так у вас есть одна цифра м (от 0 до 9, но это будет только когда-либо будет 0, если все значение равно 0) , и несколько цифр n. Я предполагаю, что это могло бы быть лучше, чтобы показать примеры:

1 = 1.0000 * 10^0 = 1e0 
10 = 1.0000 * 10^1 = 1e1 
10000 = 1.0000 * 10^4 = 1e4 
0.1 = 1.0000 * 10^-1 = 1e-1 

1,419 = 1.419 * 10^3 = 1.419e3 
0.0000= 1.23 * 10^-5 = 1.23e-5 

Вы можете посмотреть экспоненциальное от Google, но это полезно для выражения очень больших или малых чисел как0000000000000 бы 1.2321e24 (я фактически не счетчик, показатель может быть неточным).

В C, я думаю, вы можете извлечь экспоненту из верхних 12 бит (первым из которых является знак, который вам придется игнорировать). См.: IEEE758-1985 Floating Point

0

В научной нотации показатель степени равен десяти величине XX, поэтому 1234.5678 может быть представлен как 1.2345678E03, где нормализованная форма умножается на 10^3, чтобы получить «реальный» ответ.

0

Если вы пишете число в научной нотации, то экспонента является частью этих обозначений.

Вы можете увидеть полное описание здесь http://en.wikipedia.org/wiki/Scientific_notation, но в основном это просто другой способ написать номер, обычно используемый для очень больших или очень маленьких чисел.

Скажите, что у вас есть число 300, равное 3 * 100, или 3 * 10^2 в научной нотации.

Если вы используете% e, оно будет напечатано как 3.0e + 02