I'm using SharePoint 2007 and developing a custom view using SharePoint Designer 2007.

I've a column of a table that should display numbers as percentage. Minimun value is 0, maximum 100.

In SP Designer I'm using the suggested code:

<xsl:value-of select="format-number(@Probabilit_x00e0_, &quot;###0,%;-###0,%&quot;, &quot;lcid1040&quot;)" />

But, unless I insert a number like 0 or 100, I always see "NaN". No default value is set.


  • format-number() expects a number, if you give it something else it will return NaN (Not a Number) error, what is the problem? – Robert Lindgren Oct 21 '13 at 13:17
  • Sorry, I mean if I insert "20" (without quotes, obviously), I see NaN. The value must be 0 or 100, but it is not correct. – Pepozzo Oct 21 '13 at 13:27

You could capture the formatted number first and then check for a NaN value.

<xsl:variable name="myValue" select="format-number(@Probabilit_x00e0_, &quot;###0,%;-###0,%&quot;, &quot;lcid1040&quot;)" />
  <xsl:when test="string(number($myValue))='NaN'">0</xsl:when>
    <xsl:value-of select="$myValue" />

This will switch out NaN for a zero.

| improve this answer | |

When using "format-number", it expects a period separator for decimals. With the percentage field (LCID 1036 for french), the decimals separator is a comma.

I had to translate the comma to get it working correctly. I haven't checked if it is the same thing for 1033 or 1040 in this case.

format-number(string(translate(@PercentField,',','.')), '#,##0%;-#')
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.