'Reduce number with percent
I'm trying to implement a code check:
const transfer = async (
amount: string
): Promise<void> => {
if (parseFloat(amount) <= parseFloat('0.01')) {
amount = String((2 / 100) * amount);
}
.......
}
In general I want to make a check and reduce the amount with some very small percent. But I get error for this line * amount);:
TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
Do you know how I can fix this issue?
Solution 1:[1]
To resolve this, both string results have to be converted to number. This can be achieved by these 3 method:
- Unary Operator (+)
- parseFloat() //Already you used
- Multiply with number
1.Using Unary Operator (+) :
const transfer = async (
amount: string
): Promise<void> => {
if (+amount <= 0.01) {
amount = String(+(2 / 100) * +amount);
}
// More code here...
}
2.parseFloat() :
const transfer = async (
amount: string
): Promise<void> => {
if (parseFloat(amount) <= 0.01) {
amount = String((2 / 100) * parseFloat(amount));
}
// More code here...
}
3.Multiply with number :
const transfer = async (
amount: string
): Promise<void> => {
if ((amount*1) <= 0.01) {
amount = String((2 / 100) * (amount*1));
}
// More code here...
}
this error most off occurs by too much brackets.you need to try 1 method Unary Operator (+). it help to convert string into number and you don't need to wrap a string value into a brackets.
Solution 2:[2]
You should be doing String((2 / 100) * parseFloat(amount));: you forgot to convert it to a number for arithmetic operations. Also, there is no need to use parseFloat(0.01) when you can use 0.01 directly. Your updated code would look like this:
const transfer = async (
amount: string
): Promise<void> => {
if (parseFloat(amount) <= 0.01) {
amount = String((2 / 100) * parseFloat(amount));
}
// More code here...
}
Also, if you want convert to string, a simpler way is to use template literals:
if (parseFloat(amount) <= 0.01) {
amount = `2 / 100 * ${parseFloat(amount)}`;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Prit Hirpara |
| Solution 2 |
