Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug(Field.Currency): strange behaviour when entering big/large numbers #3124

Closed
langz opened this issue Dec 20, 2023 · 3 comments · Fixed by #3184
Closed

bug(Field.Currency): strange behaviour when entering big/large numbers #3124

langz opened this issue Dec 20, 2023 · 3 comments · Fixed by #3184
Labels
bug Something isn't working released
Milestone

Comments

@langz
Copy link
Contributor

langz commented Dec 20, 2023

🐛 Bug Report

When entering values in the number field, it suddenly changes values.

All I do is entering the value 8, many times.

Video:

Screen.Recording.2023-12-20.at.11.06.45.mov

To Reproduce

Steps to reproduce the behavior:

Go to the following example in our docs:

  • Enter 8 many many times
  • Then just observe what happens after entering 8 for the 17th time(input changes from 88888888888888888 to 88888888888888900) and 22th time pressing 8(input changes to 8,888888888888 and onChange returns 8.88888888888889e+21).

Expected behavior

I expect it to behave as a regular input field, see the following CSB, and video(left is input type string and right is input type number):

Screen.Recording.2023-12-20.at.10.44.33.mov
@langz langz added the bug Something isn't working label Dec 20, 2023
@langz langz added this to the Forms Release milestone Dec 20, 2023
@snorrekim
Copy link
Contributor

Javascript float integer are only precise up to 15 digits, after that they will start rounding. There's BigInt to fix it, but perhaps we should also consider storing it as a string?

@snorrekim
Copy link
Contributor

9007199254740991 is Number.MAX_SAFE_INTEGER. Any higher, and it loses precision. Even google's Material UI (https://mui.com/base-ui/react-number-input/) limit their number input to that. So I think that's what we should do as well.

tujoworker added a commit that referenced this issue Jan 9, 2024
- Fixes #3124
- Relies on PR #3185 and will be rebased from main later: ✅
tujoworker pushed a commit that referenced this issue Jan 11, 2024
## [10.17.0](v10.16.0...v10.17.0) (2024-01-11)

### 📝 Documentation

* refactor custom field component docs and example ([#3193](#3193)) ([3871079](3871079))

### ✨ Features

* **Anchor:** blank target icon styling  ([#3172](#3172)) ([2ca216a](2ca216a))
* **DatePicker:** add onFocus event ([#3188](#3188)) ([2062213](2062213))
* **Field.Number:** add step control functionality ([#3140](#3140)) ([a9e1697](a9e1697))
* **Form.Visibility:** add `pathValue` and `whenValue` ([#3206](#3206)) ([8a547ae](8a547ae))

### 🐛 Bug Fixes

* **Autocomplete:** only set aria-controls attribute when expanded ([#3180](#3180)) ([a16a7ba](a16a7ba))
* **DatePicker:** add return object for onBlur ([#3178](#3178)) ([18b3889](18b3889))
* **DatePicker:** fix bug where minDate set to today is disabled ([#3176](#3176)) ([ef65676](ef65676))
* **Dropdown:** correct aria-controls target element ([#3181](#3181)) ([bc26101](bc26101))
* **Field.Currency:** handle big numbers ([#3184](#3184)) ([b856a46](b856a46)), closes [#3124](#3124) [#3185](#3185)
* **Field.Number:** replace `rightAligned` prop with `align` ([#3175](#3175)) ([ba130ba](ba130ba))
* **FieldBlock:** ensure extra spacing of labels when on small screens ([#3187](#3187)) ([c86c857](c86c857)), closes [#3102](#3102)
* **FieldBlock:** label can be clicked after focusing input ([#3190](#3190)) ([95b37e7](95b37e7)), closes [#2979](#2979)
* **Flex.Container:** add `Flex.withChildren` HOC for handling wrapped children with spacing ([#3200](#3200)) ([93df77c](93df77c))
* **Flex.Container:** show line divider even when heading is present ([#3198](#3198)) ([d135b47](d135b47))
* **Form.Visibility:** move Visibility to Form.Visibility ([#3205](#3205)) ([d3b766f](d3b766f))
* **InputMasked:** correct cursor position when navigating using keyboard ([#3160](#3160)) ([9143b38](9143b38))
* **InputMasked:** extend reliability on cursor position correction ([#3194](#3194)) ([cbc27ac](cbc27ac)), closes [#3160](#3160)
* **MultiInputMask:** enhance handling of right, left and backspace key usage ([#3192](#3192)) ([f3ce934](f3ce934))
* **PhoneNumber:** show read outline on both fields in error state ([#3196](#3196)) ([16ed821](16ed821))
* **Textarea:** ensure correct height based on rows for Firefox browser ([#3207](#3207)) ([75f754e](75f754e))
* **Visibility:** add support for being used in Flex.Container ([#3203](#3203)) ([7a72fa6](7a72fa6))
@tujoworker
Copy link
Member

🎉 This issue has been resolved in version 10.17.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

tujoworker added a commit that referenced this issue Aug 14, 2024
…` value exceeds maximum possible amount (#3821)

This changes the behaviour added in [this
PR](#3184) which again is
based on [this
issue](#3124).

---------

Co-authored-by: Joakim Bjerknes <joakbjerk@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working released
Development

Successfully merging a pull request may close this issue.

3 participants