Fra*_*yyn 1 javascript reactjs react-native
我正在创建一个计算器应用程序来帮助计算小数,并且想要小数点后两位的值,如下所示:
number output
------ -------
1 1.00
1.446 1.45
1.567 1.57
Run Code Online (Sandbox Code Playgroud)
我尝试使用 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)
}
Run Code Online (Sandbox Code Playgroud)
从您的问题来看,尚不清楚您要在哪里执行转换。然而,这应该会让你走上正轨。
和toFixed()都toPrecision()返回一个表示数字的字符串。很明显,您不能使用该字符串进行进一步的计算。为此,请使用parseFloat()从字符串中获取浮点数。
const floatingPointNumber = 1.567;
parseFloat(floatingPointNumber.toFixed(2));
parseFloat(floatingPointNumber.toPrecision(3));
Run Code Online (Sandbox Code Playgroud)
关于toFixed()和toPrecision(),它们实际上执行相同的操作,但第一个给出 n 位小数,而后者给出 n 位(参见这个问题)。
| 归档时间: |
|
| 查看次数: |
10659 次 |
| 最近记录: |