You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NativeBase Progress组件算术转换精度丢失错误求助

React Native + NativeBase Progress组件Android精度丢失错误

错误信息

(NOBRIDGE) ERROR Warning: Error: Exception in HostFunction: Loss of precision during arithmetic conversion: (long) 7.000000000000001

复现代码

import React from "react";
import { NativeBaseProvider, Progress } from "native-base";

export default function App() {
  return (
    <NativeBaseProvider>
      <Progress value={7} />
    </NativeBaseProvider>
  );
}

依赖版本

{
  "dependencies": {
    "expo": "~52.0.23",
    "native-base": "^3.4.28",
    "react": "18.3.1",
    "react-native": "0.76.5",
    "react-native-safe-area-context": "4.12.0",
    "react-native-svg": "15.8.0"
  }
}

问题分析

NativeBase的Progress组件在Android端会将传入的value解析为带精度误差的浮点数(比如整数7被处理为7.000000000000001),而组件的Android原生实现预期接收精确的long类型整数,导致类型转换时出现精度丢失异常,该问题已在Android模拟器复现。

解决方案

  • 强制传递整数类型值:如果value是静态整数,直接传入整数字面量;如果是动态计算值,通过Math.floor()或Math.round()确保其为整数:
    // 静态场景直接传整数
    <Progress value={7} />
    // 动态计算场景做转换
    <Progress value={Math.round(calculatedValue)} />
    
  • 手动校验精度:对动态生成的value先做整数判断,再处理后传递:
    const safeValue = Number.isInteger(dynamicValue) ? dynamicValue : Math.floor(dynamicValue);
    <Progress value={safeValue} />
    
  • 升级NativeBase版本:该问题大概率是旧版本的组件实现bug,尝试升级到NativeBase的最新稳定版,官方可能已修复精度处理逻辑。

内容的提问来源于stack exchange,提问作者Aleks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:37:08