我正在創建一個計算器應用程式來幫助處理小數,并希望得到如下兩位小數:
number output
------ -------
1 1.00
1.446 1.45
1.567 1.57
我曾嘗試使用 toFixed(2),但由于我使用的是數學而不是字串,因此出現錯誤。
我也嘗試過使用 toPrecision(4) 但我也得到一個錯誤
任何幫助將非常感激。
import React from 'react';
import {StyleSheet, Text, View, TouchableOpacity, Vibration} from 'react-native';
import {useState} from 'react';
import { Entypo } from '@expo/vector-icons';
export default function App() {
const [darkMode, setDarkMode] = useState(false);
const [currentNumber, setCurrentNumber] = useState('');
const [lastNumber, setLastNumber] = useState('');
const buttons = ['C', 'DEL', '/', 7, 8, 9, '*', 4, 5, 6, '-', 1, 2, 3, ' ', 0, '.', '=']
function calculator() {
let lastArr = currentNumber[currentNumber.length-1];
if(lastArr === '/' || lastArr === '*' || lastArr === '-' || lastArr === ' ' || lastArr === '.') {
setCurrentNumber(currentNumber)
return
}
else {
let result = eval(currentNumber).toString();
setCurrentNumber(result)
return
}
}
function handleInput(buttonPressed) {
if(buttonPressed === ' ' || buttonPressed === '-' || buttonPressed === '*' || buttonPressed === '/') {
Vibration.vibrate(35);
setCurrentNumber(currentNumber buttonPressed)
return
}
else if (buttonPressed === 1 || buttonPressed === 2 || buttonPressed === 3 || buttonPressed === 4 || buttonPressed === 5 ||
buttonPressed === 6 || buttonPressed === 7 || buttonPressed === 8 || buttonPressed === 9 || buttonPressed === 0 || buttonPressed === '.' ) {
Vibration.vibrate(35);
}
switch(buttonPressed) {
case 'DEL':
Vibration.vibrate(35);
setCurrentNumber(currentNumber.substring(0, (currentNumber.length - 1)))
return
case 'C':
Vibration.vibrate(35);
setLastNumber('')
setCurrentNumber('')
return
case '=':
Vibration.vibrate(35);
setLastNumber(currentNumber '=')
calculator()
return
}
setCurrentNumber(currentNumber buttonPressed)
}
uj5u.com熱心網友回復:
根據您的問題,不清楚您要在哪里執行轉換。但是,這應該讓您走上正確的軌道。
兩者都toFixed()回傳toPrecision()一個表示數字的字串。很明顯,您不能使用該字串進行進一步的計算。為此,請使用parseFloat()從字串中獲取浮點數。
const floatingPointNumber = 1.567;
parseFloat(floatingPointNumber.toFixed(2));
parseFloat(floatingPointNumber.toPrecision(3));
關于toFixed()and toPrecision(),它們實際上執行相同的操作,但第一個給出 n 位小數,而后者給出 n 位(參見這個問題)。
uj5u.com熱心網友回復:
試試這個,可能對你有幫助;
function floatTwoDecFromString(value: string) {
let newValue = value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');
newValue =
newValue.indexOf('.') !== -1
? newValue.slice(0, newValue.indexOf('.') 3)
: newValue;
return newValue;
}
uj5u.com熱心網友回復:
我了解您正在嘗試四舍五入,而不僅僅是剪輯到小數位。你可以使用Math.round. 雖然它四舍五入到最接近的 int,但您可以使用這個技巧來四舍五入小數:
const roundToHundredths = num=>{
let roundedNum = Math.round(num*100)/100
// force 2 decimal places
return roundedNum.toFixed(2);
}
請記住,該值現在是一個字串。parseFloat在必須進行其他計算時使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431317.html
標籤:javascript 反应 反应式
上一篇:通過firebasefirestore集合組映??射,不作業
下一篇:如何將陣列發布到Strapi
