0

第一次SO用户:)

我知道我可以像这样格式化一个数字:

format-number($value, '###,###.00')

但是如果 $value 为零,我想删除点和零。

所以,

37368 -> 37,368
2.666667 -> 2.66

这是否可能仅使用数字格式(看起来不像)或者我必须按照以下方式做一些事情

if (int(value) == value ) {...}
4

2 回答 2

1
format-number($value, '###,###.##')
于 2009-01-19T16:40:42.657 回答
0

xpath 2.0 包含条件逻辑if..then..else但在更有可能的情况下,您在 xpath 1.0 中,恐怕您将不得不依赖 XSLT 为您执行此操作,即:

<xsl:variable name="myvar">
  <xsl:choose>
    <xsl:when test="$value > 0">
      <xsl:select="format-number($value, '###,###.00')"/>
    </xsl:when>
    <xsl:otherwise>0</xsl:otherwise>
  </xsl:choose>>
</xsl:variable>

..或混合扩展(.NET 可以在本地执行此操作,否则 EXSLT 存在,可能有更多可用选项)

据我所知,没有 xpath 函数可以让你摆脱困境,但我可能会错过一些异国情调的东西。

于 2009-01-19T14:53:34.120 回答