про float

Hi Boris, hope you are having a nice day!

22 Дек 04, Boris Belyakov wrote to All:

BB> сейчас сделано так, что первому слагаемому (которое равно 0.5) условно BB> соответствует число 50000..., которое в последующих итерациях делится BB> пополам. Всё это суммируется, а потом делается bin -> bcd до нужного BB> знака. Верю, что это не есть совершенство :-) Ведь делал же кто то BB> свой float _to_ string вместо printf ...

А что мешает сделать сначала умножение числа на 10^n, затем конвертнуть в целое (с округлением или без), а затем уже как обычно bin to bcd?

WBR, AVB

Reply to
Alexey V Bugrov
Loading thread data ...

Hello Alexey.

Воскресенье, Декабрь, 26, 2004 00:39:22, Alexey V Bugrov wrote to Boris Belyakov:

BB>> сейчас сделано так, что первому слагаемому (которое равно 0.5) условно BB>> соответствует число 50000..., которое в последующих итерациях делится BB>> пополам. Всё это суммируется, а потом делается bin -> bcd до нужного BB>> знака. Верю, что это не есть совершенство :-) Ведь делал же кто то BB>> свой float _to_ string вместо printf ...

AVB> А что мешает сделать сначала умножение числа на 10^n, затем конвертнуть в AVB> целое (с округлением или без), а затем уже как обычно bin to bcd?

Да нет, Алексей, ничего не мешает, просто хотелось узнать нет ли алгоритма отличного от представленного. Верю что есть...

Boris

... Hаука не пиво - в pот не вольешь

Reply to
Boris Belyakov

Hello, Boris! You wrote to Alexey V Bugrov on Tue, 28 Dec 2004 13:45:30 +0500:

BB> Hello Alexey.

BB> Воскресенье, Декабрь, 26, 2004 00:39:22, Alexey V Bugrov wrote to Boris BB> Belyakov:

BB>>> сейчас сделано так, что первому слагаемому (которое равно 0.5) BB>>> условно соответствует число 50000..., которое в последующих итерациях BB>>> делится пополам. Всё это суммируется, а потом делается bin -> bcd до BB>>> нужного знака. Верю, что это не есть совершенство :-) Ведь делал же BB>>> кто то свой float _to_ string вместо printf ...

AVB>> А что мешает сделать сначала умножение числа на 10^n, затем AVB>> конвертнуть в целое (с округлением или без), а затем уже как обычно AVB>> bin to bcd?

BB> Да нет, Алексей, ничего не мешает, просто хотелось узнать нет ли BB> алгоритма отличного от представленного. Верю что есть...

Во первых, на atmel.ru

formatting link
есть статейка с готовым кодом преобразования float -> bcd. Я в ней сильно не разбирался, может там то же про что ты пишешь. Поинтресуйся, может найдешь что для себя интересное.

Я же сделал преобразование double -> bcd по методу, предложенному AVB. Мне этот метод понравился быстротой и простотой. Только я не умножал double на 10^n напрямую - это долго. Я n раз умножал double на 10. А на 10 я умножал так: double*8 + double*2. То есть фактически инкрементировал порядок на 3 и на 1 соответственно. Быстрее получается. Округлял я уже готовое BCD.

With best regards, Dmitry Gromov. E-mail: snipped-for-privacy@deletethis.newmail.ru

Reply to
Dmitry Gromov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.