Странное поведение на числовых степперах - PullRequest
2 голосов
/ 12 апреля 2011

Я делаю редактор для поля с числами.Я попробовал текстовое поле, но, так как это входящий тип данных Number, он не прошел гладко - несмотря на преобразование строк в виде чисел и т. Д., Он продолжал давать мне NaN в качестве значения.Поэтому я решил, что будет лучше пойти с числовым степпером.

Когда я первоначально загрузил его, он отбросил бы все мои десятичные дроби и отобразил бы только мои числа в виде целых чисел.Я изменил stepIncrement на 0,1, и теперь он показывает десятичные дроби (странное требование imo) ... но когда я увеличиваю его, он иногда дает мне значение типа '17 .700000000000003', когда я ожидаю 17.7.Все числа в моих данных имеют одно десятичное место.Я знаю, что могу написать dataformatter, но кажется, что в этой ситуации это не нужно.

Есть ли другой способ справиться с этим?

Ответы [ 3 ]

7 голосов
/ 12 апреля 2011

Вы наткнулись на компромисс в попытке представить десятичные числа в двоичных форматах с плавающей запятой, таких как IEEE 754. Не все десятичные числа могут быть точно представлены. Вы можете прочитать по этому вопросу в деталях здесь:

http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding

Вы можете использовать Number.toFixed (фракцияDigits: uint) для отображения произвольного числа десятичных разрядов.

0 голосов
/ 21 апреля 2015

в вашем MXML

<s:NumericStepper  valueFormatFunction="stepperFormatter"/>

в вашем скрипте

protected function stepperFormatter(newValue:Number):String
{
    return Math.ceil(newValue).toString()
}
0 голосов
/ 24 декабря 2011

Вы можете использовать valueFormatFunction, которая принимает числовое значение и форматирует его в строку.Вам нужно будет установить явную ширину ваших числовых степперов, чтобы они соответствовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...