[comp.lang.pascal] pascal writeln format error?

putz@boulder.Colorado.EDU (Eric Putz) (01/10/90)

I am having a problem getting writeln to output a number with a decimal value
of 0, not in the 'e' format, and am not sure if this is a compiler bug, or
a feature of pascal. I have tried the following lines with the following 
results:

	writeln(1.0:1:1) gives me 1.0

	writeln(1.0:1:0) gives me 1.0e+00.

What I was hoping for was 1 when writeln was given a decimal value of 0. 
All other decimal values I have tried (> 0) have worked correctly. The 
compiler I am using is MIPS Pascal 2.0 (from RISC/os4.00 & cmplrs2.0) on 
an M2000. Any thoughts? Thanks in advance.
+---------
|Eric Putz                    				 (303)492-1474
|MCD Biology, Campus Box 347, University of Colorado, Boulder CO 80309 
|putz@Boulder.Colorado.EDU                 

zaineb@mips.COM (Zaineb Asaf) (01/10/90)

>>From: putz@boulder.Colorado.EDU (Eric Putz)
>>I am having a problem getting writeln to output a number with a decimal value
>>of 0, not in the 'e' format, and am not sure if this is a compiler bug, or
>>a feature of pascal. I have tried the following lines with the following 
>>results:

	writeln(1.0:1:0) gives me 1.0e+00.

>>What I was hoping for was 1 when writeln was given a decimal value of 0. 
>>All other decimal values I have tried (> 0) have worked correctly. The 
>>compiler I am using is MIPS Pascal 2.0 (from RISC/os4.00 & cmplrs2.0) on 
>>an M2000. Any thoughts? Thanks in advance.


The above statement is incorrect according to Standard Pascal.  The standard
states:
     write(e:TotalWidth:FracDigits);
     
     where the "values of TotalWidth and FracDigits shall be greater than or
     equal to one; it shall be an error if either value is less than one"

Therefore, this problem is a user error; however, the compiler will be changed
to give a runtime error if this situation will happen.

Thanks for pointing out this error for us.

Zaineb

-- 
--      zaineb Asaf
UUCP:	{ames,decwrl,prls,pyramid}!mips!zaineb	(or zaineb@mips.com)
DDD:	408-991-0347 				(or 408-720-1700, Ext. 347)
USPS:	MIPS Computer Systems, 930 Arques, Sunnyvale, CA 94086-3650

ts@uwasa.fi (Timo Salmi LASK) (01/10/90)

In article <15473@boulder.Colorado.EDU> putz@boulder.Colorado.EDU (Eric Putz) writes:
>
>I am having a problem getting writeln to output a number with a decimal value
>of 0, not in the 'e' format, and am not sure if this is a compiler bug, or
>a feature of pascal. I have tried the following lines with the following 
>results:
>	writeln(1.0:1:1) gives me 1.0
>	writeln(1.0:1:0) gives me 1.0e+00.
>What I was hoping for was 1 when writeln was given a decimal value of 0. 
>All other decimal values I have tried (> 0) have worked correctly. The 
>compiler I am using is MIPS Pascal 2.0 (from RISC/os4.00 & cmplrs2.0) on 
>an M2000. Any thoughts? Thanks in advance.

This is off the cuff, and concerns Turbo Pascal (so no guarantees),
but try
  writeln(1.0:0:0) 

...................................................................
Prof. Timo Salmi                                (Site 128.214.12.3)
School of Business Studies, University of Vaasa, SF-65101, Finland
Internet: ts@chyde.uwasa.fi Funet: vakk::salmi Bitnet: salmi@finfun

d88-eli@nada.kth.se (Erik Liljencrantz) (01/11/90)

In article <15473@boulder.Colorado.EDU> putz@boulder.Colorado.EDU (Eric Putz) writes:
>[deleted]
>	writeln(1.0:1:1) gives me 1.0
>	writeln(1.0:1:0) gives me 1.0e+00.
>[deleted]

A real with no decimals... Eureka! It's an INTEGER! Try this:
  writeln(round(1.0):1) gives 1
This should work as long as the real number is within the integer range.
-- 
Erik Liljencrantz     | "No silly quotes!!"
d88-eli@nada.kth.se   |  Embraquel D. Tuta