Flex Spark CurrencyFormatter неправильно форматирует '0' - PullRequest
2 голосов
/ 10 февраля 2012

У меня проблема со свечой CurrencyFormatter, которая не может правильно отформатировать значение 0.

Все остальные значения отформатированы в порядке.Flex 4.5

Вот пример:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <s:CurrencyFormatter currencyISOCode="GBP" id="formatter" useCurrencySymbol="true" currencySymbol="£" trailingZeros="true" leadingZero="true" negativeCurrencyFormat="0" positiveCurrencyFormat="0"  />
    </fx:Declarations>
    <s:HGroup>
        <s:TextInput id="textInput" />
        <s:Label text="{formatter.format(textInput.text)}" />
    </s:HGroup>
</s:Application>

Если значение textInput отличное от 0, оно отформатировано правильно.заставить это правильно отформатировать?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Я тоже это заметил.Я скачал example2 из справки Adobe и, немного его подправив, обнаружил, что если я передал его 0,001, я получу взамен «0,00».Это должно быть ошибкой, иначе это просто глупо.Кроме того, у формы mx денежного формататора, кажется, нет этой проблемы.А пока я буду искать «0» и добавлять «.001» к значению в моей программе.Надеюсь, кто-то придумает лучший ответ.

0 голосов
/ 04 октября 2012

Я знаю, что это старая ветка, но я отвечу на будущие сомнения. Вы можете решить эту проблему, установив значение UP для свойства rounding из mx:CurrencyFormatter.

Вот пример:

<mx:CurrencyFormatter
        id="currencyFormatter"
        currencySymbol=""
        precision="2"
        rounding="up"
        decimalSeparatorFrom=","
        decimalSeparatorTo=","
        useNegativeSign="true"
        useThousandsSeparator="true"
        thousandsSeparatorFrom="."
        thousandsSeparatorTo="."
        alignSymbol="left" />

Тогда в вашем коде, когда вы форматируете значение 0,001 или 0,00000001, вы получите «0,01» в результате.

currencyFormatter.format(item.total)
...