
StrToFloat() & FloatToStr()
Moderator: Shaos
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
StrToFloat() & FloatToStr()
Может кто-нибудь объяснить как преобразовать вещественное число в строку - StrToFloaf() - и обратно - FloatToStr() - без последовательного деления и умножения целой и дробной частей ? Чем понятнее объясните, тем быстрее будет выпущен калькулятор для Flex-а 

-
- Doomed
- Posts: 413
- Joined: 11 Dec 2003 14:34
По сабжу, к сожалению, пока ничего дельного не попадалось.
P.S. Когда дело дойдет до правки библиотечных функций SOLID C под Estex,
то для "printf" хочу прикрутить твою процедуру (что ты кидал как-то на
форуме ПП). Наткнулся на глюки в твоем "printf". Это относится к выводу
знаковых чисел. У тебя заюзано "res 7,a", я кидаю уже по-фиксенные проце-
дурки.
Положение метки "uLong2DEC_" в твоем сорце, для моего куска надо
пересмотреть. Адрес перехода не совпадает с твоим.
Далее, никаких особенностей нет.
P.S. Когда дело дойдет до правки библиотечных функций SOLID C под Estex,
то для "printf" хочу прикрутить твою процедуру (что ты кидал как-то на
форуме ПП). Наткнулся на глюки в твоем "printf". Это относится к выводу
знаковых чисел. У тебя заюзано "res 7,a", я кидаю уже по-фиксенные проце-
дурки.
Кста, у тебя в этой процедуре проверкаLong2DEC:
ld a,(de) ; ст.разряд
ld l,a
inc de
ld a,(de)
ld h,a
bit 7,a
jp z,uLong2DEC_ ; сохр. старший и загр. мл.разряд
inc de
ld a,(de) ; мл.разряд
ld c,a
inc de
ld a,(de)
ld b,a
; обраб. мл.разряд
xor a
sub c
ld c,a
ld a,0
sbc a,b
ld b,a
; обраб. ст.разряд
ld a,0
sbc a,l
ld l,a
ld a,0
sbc a,h
ld h,a
push hl
ld l,c
ld a,b
;
push af
ld a,"-"
call OutputSymbl
...
делается для младшего разряда, вместо старшего.bit 7,a
jp z,uLong2DEC_
Положение метки "uLong2DEC_" в твоем сорце, для моего куска надо
пересмотреть. Адрес перехода не совпадает с твоим.
Далее, никаких особенностей нет.
Word2DEC:
ld a,(de)
ld l,a
inc de
ld a,(de)
bit 7,a
jr z,uWord2DEC_
;res 7,a
;
ld h,a ;--
xor a ;
sub l ;
ld l,a ;
ld a,0 ;
sbc a,h ;--
;
push af
ld a,"-"
call OutputSymbl
pop af
jr uWord2DEC_
Byte2DEC:
ld h,0
ld a,(de)
bit 7,a
jr z,uByte2DEC_
;res 7,a
;
ld l,a ;--
xor a ;
sub l ;--
;
push af
ld a,"-"
call OutputSymbl
pop af
jr uByte2DEC_
Vasil Ivanov
vasil-i@yandex.ru
vasil-i@yandex.ru
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Мне тоже. Не хочется верить что такая функция реализуется делениемПо сабжу, к сожалению, пока ничего дельного не попадалось.

Удивительно что только ты о них сказалНаткнулся на глюки в твоем "printf".

-
- Doomed
- Posts: 413
- Joined: 11 Dec 2003 14:34
Да, у тебя не прикручено удаление ведущих нулей. Брошу тебе мой вариант для SOLID C. Только его еще надо чуть с`оптимизить (где стоят "dec hl;", "inc hl;"). Только это черновой тестовый вариант для CP/M.Mac Buster wrote:Удивительно что только ты о них сказалНаткнулся на глюки в твоем "printf".Там кое-что следует вообще переписать. Кроме того, я кажется так и не сделал удаление незначащих нулей. Постараюсь заняться в выходной.
Хотел бросить сюда, но здесь все форматирование текста сбивается.
Поэтому брошу на твой e-mail.
Vasil Ivanov
vasil-i@yandex.ru
vasil-i@yandex.ru