如何实现函数返回的数组元素保留两位小数?
Hey there! I see you're trying to get each element in your investment growth array formatted to two decimal places, and the approaches you've tried so far aren't working—let's sort this out.
Why Your Previous Attempts Didn't Work
totalArry.toFixed(2): ThetoFixed()method is meant for individual numbers, not entire arrays. Calling it directly on the array will just convert the whole array into a single string, which isn't what you want.totalArry[].toFixed(2): This is invalid syntax—you can't use empty brackets like that to target all elements in an array.
The Solution: Use map() to Format Each Element
The right approach is to iterate over every element in your array and apply toFixed(2) to each one individually. Here's how to do it:
Option 1: Get a String Array (with two decimal places)
If you just need the values as properly formatted strings (e.g., for display purposes), use this:
const formattedArray = totalArry.map(num => num.toFixed(2));
Option 2: Get a Number Array (with two decimal places)
If you need the values to stay as numbers (for further calculations), wrap the toFixed() result in Number() to convert it back:
const formattedNumberArray = totalArry.map(num => Number(num.toFixed(2)));
Example with Your Input
Let's plug this into your investment calculation function to match your desired output:
function calculateInvestmentGrowth(years, iniInvest, interestRate, yearlyInvestment) { const totalArray = []; let currentBalance = iniInvest; for (let i = 0; i < years; i++) { // Calculate yearly growth currentBalance = currentBalance * (1 + interestRate / 100) + yearlyInvestment; totalArray.push(currentBalance); } // Format each element to two decimal places as numbers return totalArray.map(num => Number(num.toFixed(2))); } // Test with your input values console.log(calculateInvestmentGrowth(5, 1000, 10, 1000)); // Output: [1100.00, 2310.00, 3641.00, 5105.10, 6715.61]
A Quick Note on Precision
The toFixed() method handles rounding correctly for your use case—notice how it turns 6715.610000000001 into 6715.61, which matches your desired result. If you ever run into edge cases with floating-point precision, you could also use Math.round(num * 100) / 100 instead, but toFixed() works perfectly here.
内容的提问来源于stack exchange,提问作者LevoDoe

