Я думаю, что лучше ответить на пример.
Допустим, у вас есть следующие данные:
var products = [
{
"title": "Really Nice Pen",
"price": 150
},
{
"title": "Golf Shirt",
"price": 49.99
},
{
"title": "My Car",
"price": 1234.56
}
]
Вы хотите отобразить каждый из этих продуктов с заголовком и форматированной ценой. Давайте сначала попробуем использовать toPrecision
:
document.write("The price of " + products[0].title + " is $" + products[0].price.toPrecision(5));
The price of Really Nice Pen is $150.00
Выглядит хорошо, поэтому вы можете подумать, что это будет работать и для других продуктов:
document.write("The price of " + products[1].title + " is $" + products[2].price.toPrecision(5));
document.write("The price of " + products[2].title + " is $" + products[2].price.toPrecision(5));
The price of Golf Shirt is $49.990
The price of My Car is $1234.6
Не очень хорошо. Мы можем исправить это, изменив количество значащих цифр для каждого продукта, но если мы перебираем массив продуктов, который может быть сложным. Давайте использовать toFixed
вместо:
document.write("The price of " + products[0].title + " is $" + products[0].price.toFixed(2));
document.write("The price of " + products[1].title + " is $" + products[2].price.toFixed(2));
document.write("The price of " + products[2].title + " is $" + products[2].price.toFixed(2));
The price of Really Nice Pen is $150.00
The price of Golf Shirt is $49.99
The price of My Car is $1234.56
Это производит то, что вы ожидали. Здесь нет работы по угадыванию и округлений.