Converts a number to a string. It uses the default format that the programmer has specified. Note also that you can also explicitly specify a number or date format to use.
Speaking first of number formatting, there are three predefined number formats: number, currency, and percent. In this sense, you can use all of the below expressions:
 |  |  |
 |
<#assign answer=42/>
${answer}
${answer?string} <#-- the same as ${answer} -->
${answer?string.number}
${answer?string.currency}
${answer?string.percent} |
|  |
 |  |  |
If your locale is US English, this will produce:
The output of first three expressions is identical because the first two expressions use the default format, which is "number" here. You can change this default using a setting:
 |  |  |
 |
<#setting number_format="currency"/>
<#assign answer=42/>
${answer}
${answer?string} <#-- the same as ${answer} -->
${answer?string.number}
${answer?string.currency}
${answer?string.percent} |
|  |
 |  |  |
Will now output:
 |  |  |
 |
$42.00
$42.00
42
$42.00
4,200% |
|  |
 |  |  |
since the default number format was set to "currency".
Beside the three predefined formats, you can use arbitrary number format patterns written in Java decimal number format syntax both as a default setting or as an explicit format selector:
 |  |  |
 |
<#setting number_format="0.###E0"/>
${1234}
${12345?string("0.####E0")} |
|  |
 |  |  |
outputs this:
Note that you can also write ${answer?string("number")} that will do the same as ${answer?string.number}.
Note that the number formatting is locale sensitive:
 |  |  |
 |
<#setting locale="en_US">
US people writes: ${12345678?string(",##0.00")}
<#setting locale="hu">
Hungarian people writes: ${12345678?string(",##0.00")} |
|  |
 |  |  |
outputs this:
 |  |  |
 |
US people writes: 12,345,678.00
Hungarian people writes: 12 345 678,00 |
|  |
 |  |  |
You can find information about the formatting of dates here.