Javascript'te bana bir sayı verildiğinde (10000 diyelim) ve sonra bir yüzde verildiğinde (% 35,8 diyelim) nasıl olacağını merak ediyorum
bunun ne kadar olduğunu nasıl hesaplayabilirim (ör. 3580)
Yanıtlar:
var result = (35.8 / 100) * 10000;
( Bu işlem sırası değişikliği için teşekkürler jball . Bunu düşünmedim)
var
da boşluklara ihtiyacım olmadığını söyleyebilirsin , ama çok okunabilir ya da iyi bir kod olmaz mıydı? : P
var result = pct / 100 * number;
Yüzdenizin sayıya göre 100'e bölünmesi (0 ile 1 arasındaki yüzdeyi elde etmek için)
35.8/100*10000
Yapacağım şey bu:
// num is your number
// amount is your percentage
function per(num, amount){
return num*amount/100;
}
...
<html goes here>
...
alert(per(10000, 35.8));
Çok kullanışlı iki JS işlevi kullanıyorum: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){
return ((number - min) / (max - min));
}
ve
function percentToRange(percent, min, max) {
return((max - min) * percent + min);
}
% 'Yi işlevinizin bir parçası olarak geçirmek istiyorsanız, aşağıdaki alternatifi kullanmalısınız:
<script>
function fpercentStr(quantity, percentString)
{
var percent = new Number(percentString.replace("%", ""));
return fpercent(quantity, percent);
}
function fpercent(quantity, percent)
{
return quantity * percent / 100;
}
document.write("test 1: " + fpercent(10000, 35.873))
document.write("test 2: " + fpercentStr(10000, "35.873%"))
</script>
En iyisi denge denklemini doğal yoldan ezberlemektir.
Amount / Whole = Percentage / 100
Genellikle bir değişken eksiktir, bu durumda bu Miktar'dır
Amount / 10000 = 35.8 / 100
o zaman lise matematiğine (orantı) her iki taraftan birden çok dış ve her iki taraftan da iç.
Amount * 100 = 358 000
Amount = 3580
Tüm dillerde ve kağıt üzerinde aynı şekilde çalışır. JavaScript bir istisna değildir.
Kayan nokta sorunlarını tamamen önlemek için, yüzdesi hesaplanan miktar ve yüzdenin kendisinin tam sayılara dönüştürülmesi gerekir. Bunu şu şekilde çözdüm:
function calculatePercent(amount, percent) {
const amountDecimals = getNumberOfDecimals(amount);
const percentDecimals = getNumberOfDecimals(percent);
const amountAsInteger = Math.round(amount + `e${amountDecimals}`);
const percentAsInteger = Math.round(percent + `e${percentDecimals}`);
const precisionCorrection = `e-${amountDecimals + percentDecimals + 2}`; // add 2 to scale by an additional 100 since the percentage supplied is 100x the actual multiple (e.g. 35.8% is passed as 35.8, but as a proper multiple is 0.358)
return Number((amountAsInteger * percentAsInteger) + precisionCorrection);
}
function getNumberOfDecimals(number) {
const decimals = parseFloat(number).toString().split('.')[1];
if (decimals) {
return decimals.length;
}
return 0;
}
calculatePercent(20.05, 10); // 2.005
Gördüğünüz gibi ben:
amount
ve hem de ondalık sayıları sayınpercent
amount
ve percent
üstel gösterimi kullanarak tamsayılar içinÜstel gösterimin kullanımı, Jack Moore'un blog gönderisinden esinlenmiştir . Eminim sözdizimim daha kısa olabilirdi, ancak değişken adlarını kullanmam ve her adımı açıklarken olabildiğince açık olmak istedim.
var number = 10000;
var result = .358 * number;
Zor Yol (öğrenme amacı):
var number = 150
var percent= 10
var result = 0
for (var index = 0; index < number; index++) {
const calculate = index / number * 100
if (calculate == percent) result += index
}
return result
var number=10000; alert(number*0.358);