callstack / callstack/react-native-slider
Step between 0 and 1 produces floating point rounding errors
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 295
- Avg merge
- 5m
- Merged PRs (30d)
- 1
Description
## Environment
System:
OS: macOS
Binaries:
Node: v22.16.0
npm: 10.9.2
are you using the new architecture?
No (Expo-managed workflow)
which version of react & react-native are you using?
React: 19.1.0
React Native: 0.81.5
@react-native-community/slider: 5.0.1
Expo SDK: 54.0.17
## Description
when using minimumValue of 0, maximumValue of 1, and a step of 0.1, the value returned by onValueChange shows floating-point precision errors. Instead of returning decimal values (e.g. 0.4), it returns e.g. 0.4000000596046448, this can be seen in the value and the markers. Occurs consistently across iOS and Android in the Expo environment.
## Reproducible Demo
```
import React, { useState } from 'react';
import { View, Text } from 'react-native';
import Slider from '@react-native-community/slider';
export default function App() {
const [value, setValue] = useState(0);
return (
setValue(val)}
/>
Value: {value}
);
}
```
## Potential Fix
Round the computed value before emitting it in onValueChange: `value = parseFloat(value.toFixed(6));`
## Workaround
For a temp workaround users can use:
`onValueChange={(val) => setValue(Math.round(val * 10) / 10)}`
Contributor guide
Research direction
Start by running the provided Expo reproduction with minimumValue 0, maximumValue 1, and step 0.1 on both iOS and Android. Trace where onValueChange receives the computed value, then verify that emitted values and displayed markers use the expected decimal steps without floating-point artifacts.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100