про float

Dec 25, 2004 2 Replies

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


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от не вольешь

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required