XMLの特定の値を四捨五入するためにXSLTファイルを使用しています。したがって、これらの値の小数精度レベル18(小数点以下第18桁まで)を四捨五入します。私はこれをAltova XMLSpyとVisual Studioでやってみました。どちらの場合も、値は特定の桁数の後に切り捨てられます。以下は私のコードです:xsltの小数精度
XML
<DateReceived>20160509</DateReceived>
<CurrentCommitment>0</CurrentCommitment>
<InvestedCapital>1510650</InvestedCapital>
<InsideExpenses>1.4556888888888888888495783095462397857346874356023496</InsideExpenses>
<IEMF>2345.76454</IEMF>
XSLT
<xsl:template match="ROW/InsideExpenses">
<InsideExpenses>
<xsl:value-of select="format-number(round(1000000000000000000 * text()) div 1000000000000000000, '#.##################')"/>
</InsideExpenses>
のAltova XMLの場合は、タグInsideExpensesに値をスパイ1.4556888888888888だったとVisual Studioの場合、それは1.45568888888889(1少なかったです小数点以下9桁)。なぜこのようなことが起こっているのかを知ることは大いに役立ち、どうすれば小数点第18位まで数値を丸めることができるでしょうか。
ありがとうございました!私はあなたが提案したことを正確に行い、Altovaで動作しました。しかし、.NETにはネイティブのXSLT 2.0プロセッサはありません。だから私はSaxon/XQSharpなどのサードパーティのプロセッサを使用するか、何とかXSLT 1.0で動作させる必要があります。 –
マイクロソフトはXSLTプロセッサの開発を約15年前にやめ、.NET上に少なくとも3つのXSLTプロセッサがあり、Microsoft製品を凌駕しており、積極的に開発されているため、XSLT 2.0では少なくとも2倍XSLT 1.0の生産性、あなたは本当に前進することについて考える必要があります。 –