#javascript #math
#javascript #математика
Вопрос:
Я пытаюсь получить процентное соотношение между двумя числами, чтобы показать разницу в размере скидки. Я пытался упростить это настолько, насколько мог, но я все еще не могу получить то, что хочу.
Вот пример.
var RegPrice = 8.95;
var OnSale = 6.67;
var OnSaleAT = Math.abs(Math.max(100.00 - OnSale / RegPrice * 100.00));
alert(OnSaleAT.toFixed(2));
То, что я пытаюсь получить, это alert();
вернуть значение 25.50
. Тем не менее, я получаю 25.47
.
Есть идеи о том, как я могу это исправить?
Комментарии:
1. Вам не нужен jQuery для базовых арифметических операций. Кроме того, скидка на
25.47%
верна.2. какое это имеет отношение к jQuery, jQuery — это не javascript
3.
6.67 / 8.95 = 0.74525
100 - 74.525 = 25.475
, исправить на 2 десятичных знака — это25.47
. Если вы хотите округлить , вам нужно использоватьMath.round()
.
Ответ №1:
25.47486 … является правильным ответом. Если вы пытаетесь округлить до ближайших десятых, вы можете использовать:
var result = Math.round(OnSaleAT * 10) / 10;
Который выводит: 25.5 и оттуда вы можете форматировать свой ответ так, как вам нравится.
Комментарии:
1. Я бы также использовал этот код. Этот код должен быть добавлен после
var OnSaleAT
. Предупреждение будет выглядеть следующим образом:alert(result,toFixed(2));
.2. Спасибо, это то, что я пытался получить.
Ответ №2:
$(window).load(function() {
var RegPrice = 8.95;
var OnSale = 6.67;
var OnSaleAT = Math.round(Math.abs(Math.max(100.00 - 6.67 / 8.95 * 100.00)) * 10.00) / 10.00
alert(OnSaleAT.toFixed(2));
});
Ответ №3:
Если вы пытаетесь округлить до 25,5%, вы можете просто предупредить с помощью фиксированного параметра 1 вместо 2:
alert(OnSaleAT.toFixed(1));
В остальном, Роб В прав … математика действительно выходит равной 25.47, и вы мало что можете с этим поделать.
Ответ №4:
попробуйте OnSaleAT.toFixed(1) '0'
🙂
Ответ №5:
Math.ceil(1000* (1 — OnSale / RegPrice))/10
даю вам «25.5»
🙂