代码之家  ›  专栏  ›  技术社区  ›  Srekel

格式化数字,不包括尾随零

  •  0
  • Srekel  · 技术社区  · 16 年前

    首次SO用户:)

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

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

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

    所以,

    37368 -> 37,368
    2.666667 -> 2.66
    

    这可能只使用数字格式(看起来不像)吗?还是我必须做一些类似的事情

    if (int(value) == value ) {...}
    
    2 回复  |  直到 11 年前
        1
  •  1
  •   Azat Razetdinov    16 年前
    format-number($value, '###,###.##')
    
        2
  •  0
  •   annakata    16 年前

    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函数可以让你摆脱这种情况,但我可能会错过一些奇特的东西。