反应数字输入和浮点精度

问题描述

我正在制作一个表格,一个输入是一个权重,格式为'd.ddd'

我尝试了一些方法,从 .toFixed(3) 方法到在输入元素上添加一堆属性...

<input 
    type="number" 
    step="0.001" 
    min="0.001"
    max="10"
    precision={3} 
    name ="weightOfTenPieces" 
    onChange={(e)=>handleFormInput(e)} 
    value={formState.weightOfTenPieces||""}
/>
    function handleFormInput(e){
        const name = e.target.name;
        const value =e.target.value;
        setFormState(prevState=>{
            const newState = {...prevState,[name]:value};
           return newState
        })
     }

我曾尝试将 toFixed(3) 放入,但这会导致失去焦点。

inputting 0.340 results in
0.3400000035762787

第一次尝试 - 失败:

    function handleFormInput(e){
        const name = e.target.name;
        const value =e.target.value;
        console.log(name,value);
        let safeValue = value;
        if(name =="weightOfTenPieces"){
            console.log("safe value is:");
            safeValue=Number(value).toFixed(2);
            console.log(safeValue);
        }


        setFormState(prevState=>{
            const newState = {...prevState,[name]:safeValue};
            console.log(newState);
           return newState
        })
        console.log(formState);
     }

//results in input focus loss. not acceptable.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)