callstack / callstack/react-native-slider

Step between 0 and 1 produces floating point rounding errors

Open
#742 1 comment 0 reactions 0 assignees View on GitHub
bug report
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.