Tôi đang tự hỏi làm thế nào trong javascript nếu tôi được cung cấp một số (giả sử 10000) và sau đó được cung cấp một phần trăm (giả sử 35,8%)
làm thế nào tôi sẽ tính ra đó là bao nhiêu (ví dụ: 3580)
Câu trả lời:
var result = (35.8 / 100) * 10000;
(Cảm ơn jball vì sự thay đổi thứ tự hoạt động này. Tôi đã không cân nhắc).
var
, hoặc dấu cách, nhưng nó sẽ không dễ đọc hoặc mã tốt phải không? : P
var result = pct / 100 * number;
Phần trăm của bạn chia cho 100 (để nhận phần trăm từ 0 đến 1) nhân với số
35.8/100*10000
Đây là những gì tôi sẽ làm:
// num is your number
// amount is your percentage
function per(num, amount){
return num*amount/100;
}
...
<html goes here>
...
alert(per(10000, 35.8));
Tôi sử dụng hai hàm JS rất hữu ích: http://blog.bassta.bg/2013/05/rangetopercent-and-percenttorange/
function rangeToPercent(number, min, max){
return ((number - min) / (max - min));
}
và
function percentToRange(percent, min, max) {
return((max - min) * percent + min);
}
Nếu bạn muốn chuyển% như một phần của hàm, bạn nên sử dụng phương án thay thế sau:
<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>
Điều tốt nhất là ghi nhớ phương trình cân bằng theo cách tự nhiên.
Amount / Whole = Percentage / 100
thường Bạn thiếu một biến, trong trường hợp này là Số tiền
Amount / 10000 = 35.8 / 100
thì bạn có toán học trung học (tỷ lệ) với nhiều bên ngoài từ cả hai bên và bên trong từ cả hai bên.
Amount * 100 = 358 000
Amount = 3580
Nó hoạt động giống nhau trong tất cả các ngôn ngữ và trên giấy. JavaScript cũng không ngoại lệ.
Để tránh hoàn toàn các vấn đề về dấu phẩy động, số tiền mà phần trăm của nó đang được tính toán và phần trăm của chính nó cần phải được chuyển đổi thành số nguyên. Đây là cách tôi giải quyết vấn đề này:
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
Như bạn thấy, tôi:
amount
vàpercent
amount
và percent
thành số nguyên bằng cách sử dụng ký hiệu mũViệc sử dụng ký hiệu hàm mũ được lấy cảm hứng từ bài đăng trên blog của Jack Moore . Tôi chắc rằng cú pháp của tôi có thể ngắn hơn, nhưng tôi muốn càng rõ ràng càng tốt trong việc sử dụng tên biến và giải thích từng bước.
var number = 10000;
var result = .358 * number;
Cách khó hơn (mục đích học tập):
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);