数字步进小数的奇怪行为

发布于 2024-10-31 10:13:38 字数 321 浏览 4 评论 0原文

我正在为带有数字的字段制作一个编辑器。我尝试了一个文本字段,但由于它是一个数字数据类型,所以进展并不顺利——尽管将字符串重新转换为数字等。它一直给我 NaN 作为值。所以我决定最好使用数字步进器。

当我最初加载它时,它会删除所有小数,只将我的数字显示为整数。我将stepIncrement更改为0.1,现在它确实显示了小数(我认为这是一个奇怪的要求)..但是当我加强时,它偶尔会给我一个像'17.700000000000003'这样的值,而我期望的是17.7。我的数据中的所有数字都有一个小数位。我知道我可以编写一个数据格式化程序,但在这种情况下似乎没有必要。

我还有其他方法可以处理这个问题吗?

I am making an editor for a field with numbers. I tried a text field, but since it's a Number datatype coming in, it didn't go smoothly -- despite recasting strings as numbers etc.. it kept giving me NaN as the value. So I decided it would be best to go with a numeric stepper.

When I initially loaded it up it would drop all my decimals and only display my numbers as integers. I changed the stepIncrement to 0.1 and now it does show the decimals (a weird requirement imo).. but when I step up it occasionally gives me a value like '17.700000000000003' when I would expect 17.7. All of the numbers in my data have a single decimal place. I know I can write a dataformatter, but it seems like it shouldn't be necessary in this situation.

Is there another way I could deal with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

仙女山的月亮 2024-11-07 10:13:38

您偶然发现了尝试以浮点二进制格式(如 IEEE 754)表示十进制数的折衷方案。并非所有十进制数都可以精确表示。您可以在这里详细阅读此问题:

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

您可以使用 Number.toFixed(fractionDigits:uint) 显示任意位数的小数。

You've stumbled upon the compromise of trying to represent decimal numbers in floating point binary formats like IEEE 754. Not all decimal numbers can be exactly represented. You can read up on this issue in great detail here:

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

You can use Number.toFixed(fractionDigits:uint) to display to an arbitrary number of decimal places.

梦冥 2024-11-07 10:13:38

您可以使用 valueFormatFunction 获取数值并将其格式化为字符串。您需要在数字步进器上设置明确的宽度以使其适合。

You can use the valueFormatFunction which takes the numeric value and formats it to a string. You will need to set explicit widths on your numeric steppers to make they fit though.

暖阳 2024-11-07 10:13:38

MXML 中

<s:NumericStepper  valueFormatFunction="stepperFormatter"/>

在你的脚本中的

protected function stepperFormatter(newValue:Number):String
{
    return Math.ceil(newValue).toString()
}

in your MXML

<s:NumericStepper  valueFormatFunction="stepperFormatter"/>

in your script

protected function stepperFormatter(newValue:Number):String
{
    return Math.ceil(newValue).toString()
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文