Float to String: Что такое экспоненциальная часть? - PullRequest
0 голосов
/ 28 мая 2009

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

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

Теперь мне интересно, что делать в стандартной функции C `printf '. Может принимать% a или% e в качестве строки формата. Позвольте мне процитировать% e (ссылка на ссылку):

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

[-] m.nnnnnne + XX

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

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

Ответы [ 5 ]

2 голосов
/ 28 мая 2009

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

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

Таким образом, у вас есть одна цифра m (от 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.00000123 = 1.23 * 10^-5 = 1.23e-5

Вы можете найти научную нотацию в Google, но она полезна для выражения очень больших или маленьких чисел, например, 1232100000000000000 будет равно 1,2321e24 (на самом деле я не считал, показатель степени может быть неточным).

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

0 голосов
/ 28 мая 2009

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

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

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

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

0 голосов
/ 28 мая 2009

400 = 4 * 10 ^ 2

2 - показатель степени.

0 голосов
/ 28 мая 2009

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

0 голосов
/ 28 мая 2009

Показатель степени - это степень, на которую 10 повышается, а затем умножается на основание.

СИ объясняется в Википедии. http://en.wikipedia.org/wiki/Scientific_notation

m.nnnnnne+xx логически равно m.nnnnnn * 10 ^ +xx

...