0
フロア(10000000 * 1.1158)を実行しているとき、出力は11158000ではなく11157999です。しかし、フロア(11158000)を試してみると、私には良い値が返されます。XSLT - フロアの間違った値
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
format-number(floor(10000000 * 1.1158) div 10000000, '#.0000000') = <br/>
<xsl:value-of select="format-number(floor(10000000 * 1.1158) div 10000000, '#.0000000')"/>
<br/><br/>
floor(10000000 * 1.1158) div 10000000 = <br/>
<xsl:value-of select="floor(10000000 * 1.1158) div 10000000"/>
<br/><br/>
floor(10000000 * 1.1158) =<br/>
<xsl:value-of select="floor(10000000 * 1.1158)"/>
<br/><br/>
10000000 * 1.1158 = <br/>
<xsl:value-of select="10000000 * 1.1158"/>
<br/><br/>
floor(11158000 =
<br/>
<xsl:value-of select="floor(11158000)"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
出力:
format-number(floor(10000000 * 1.1158) div 10000000, '#.0000000') =
1.1157999
floor(10000000 * 1.1158) div 10000000 =
1.1157999
floor(10000000 * 1.1158) =
11157999
10000000 * 1.1158 =
11158000
floor(11158000 =
11158000
参照http://stackoverflow.com/questions/12746624/number-rounding-and-precision-problems-in-xslt-1-0およびhttp://stackoverflow.com/questions/3805248/xsl-rounding-フォーマット番号問題 –