You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@xml.apache.org by "Samson, Lyndon [IT]" <ly...@ssmb.com> on 2001/04/09 18:22:58 UTC

RE: Strange XSLT behaviour - Obliq apol for SOT

But what has summing to do with rounding? Not really intimatly related are
they?

The standed rules for rounding ie those used by java's Math.round;

System.out.println(Math.round(9.5));
System.out.println(Math.round(10.5));
System.out.println(Math.round(11.5));
System.out.println(Math.round(12.5));

produces;

10
11
12
13

...


-----Original Message-----
From: Robert Stuart [mailto:Robert.Stuart@NFER-NELSON.co.uk]
Sent: Monday, April 09, 2001 5:14 PM
To: 'general@xml.apache.org'
Cc: 'lyndon.samson@ssmb.com'
Subject: RE: Strange XSLT behaviour


Yes ... but
	9.5 + 10.5 + 11.5 + 12.5 = 34

	10 + 11 + 12 + 13 = 36	(ie wrong)

	10 + 10 + 12 + 12 = 34

Hence this type of rounding

-----Original Message-----
From: Samson, Lyndon [IT] [mailto:lyndon.samson@ssmb.com]
Sent: 09 April 2001 16:55
To: 'general@xml.apache.org'
Subject: RE: Strange XSLT behaviour


I would have expected

      9.5  => 10
      10.5 => 11
      11.5 => 12
      12.5 => 13

Ie what I remember to be standard rounding rules. I could probably work
around it
by adding 0.1 but thats a definitive 'dodgy hack' :-)



-----Original Message-----
From: Maksim Sakki [mailto:maksim.sakki@hansa.ee]
Sent: Monday, April 09, 2001 4:42 PM
To: 'general@xml.apache.org'
Subject: RE: Strange XSLT behaviour



Hi,

The given behaviour is exactly what you get when writing
"format-number(9.5,'00')".
If you want to format numbers keeping 2 decimal places, you should write
"format-number(9.5,'0.00')".

Maksim Sakki


-----Original Message-----
From: Samson, Lyndon [IT] [mailto:lyndon.samson@ssmb.com]
Sent: 09. aprill 2001. a. 17:34
To: general@xml.apache.org
Subject: Strange XSLT behaviour


Using xalan-j_2_0_0

I've noticed some funny behaviour in xalan.

When given this;

<xsl:value-of select="format-number(9.5,'00')"/> +
<xsl:value-of select="format-number(10.5,'00')"/> +
<xsl:value-of select="format-number(11.5,'00')"/> +
<xsl:value-of select="format-number(12.5,'00')"/>

It returns something like this;

10 + 10 + 12 + 12 

That is all the odd numbers are rounded up and even numbers are rounded
down.

The W3c spec refers to the java.text.DecimalFormat class

This test code;

	public void pNum(double num) {
        java.text.FieldPosition fp = new
java.text.FieldPosition(java.text.NumberFormat.FRACTION_FIELD);
        StringBuffer sb = new StringBuffer();
        java.text.DecimalFormat df = new java.text.DecimalFormat("00");
        sb = df.format(num, sb, fp);
        
	  System.out.println("SB:"+sb.toString());
	}


      pNum(9.5);
      pNum(10.5);
      pNum(11.5);
      pNum(12.5);

produces;

SB:10
SB:10
SB:12
SB:12
The same situation! The only question is this a bug or a feature? Maybe my
mathematical memory is faulty
and this is the standard way of rounding to integers? 



---------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org

---------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org

---------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org

---------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org