On Mon, 2003-06-16 at 10:52, yhou4 wrote:
> I use sprintf to convert float to string. The program is like below,
> 
> link printf
> 
> procedure main()
>     k:= -0.833333333333
> 
>     m:= sprintf("%.5r",k)
>     write(m)
> end
> 
> But I found the output is 0.83333. 
> Why it lose the minus sign? The book said "r" format is for the real numbers.
> 

That is a bug in printf.icn's fixnum() procedure!  Here's one
way to fix the problem - there's probably a better way:

In ipl/procs/printf.icn, in the procedure fixnum(x, prec),
change the last few lines from:
------------------------------------------------------
    frac := left(frac, prec, "0")
    return int || "." || frac
end
------------------------------------------------------
to:
------------------------------------------------------
    frac := left(frac, prec, "0")
    if x < 0 then int := "-"||int
    return int || "." || frac
end
------------------------------------------------------

(The problem is that integer("-0.1234") is 0...)

-- 
Steve Wampler -- [EMAIL PROTECTED]
Quantum materiae materietur marmota monax si marmota
                    monax materiam possit materiari?


-------------------------------------------------------
This SF.NET email is sponsored by: eBay
Great deals on office technology -- on eBay now! Click here:
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Unicon-group mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/unicon-group

Reply via email to