[英]Divide 100 by odd number - Javascript
我試圖將100除以一個數字,所以我得到該數字的百分比放入一個變量進入FOR ...並且FOR將百分比放入一個數組......或多或少這個:
var number = 4 var percentage = 100 / number var somaPercentual = new Array(); for (i = 0; i < number; i++) { var percentage = percentage somaPercentual.push(percentage) } console.log(somaPercentual)
在這種情況下,我的數組會來:
25,25,25,25
所以我需要總結所有數組值並給出100! 到目前為止一直很好......當被除以100的數字是奇數時,頭痛開始了!
例如,如果變量數等於3,我的數組將給出= 33.33,33.33,33.33,其中總和將給出99.99 ....然后搞砸了! 當數字為奇數時,總會發生這種情況。
誰能給我一個亮點?
總結數組元素時,可以使用Math.round()
。 這將總是給出100
的總和
function sum(number){ var percentage = 100 / number; var somaPercentual = new Array(); for (i = 0; i <number; i ++) { somaPercentual.push(percentage); } console.log(somaPercentual); var sum = 0; somaPercentual.forEach(item => sum+=item); console.log(Math.round(sum)); } sum(3); sum(4); sum(5); sum(6);
如果你不介意其中一個數字稍微偏離,那么你可以選擇這樣的錯誤。
當它達到最后一個數字時,它會計算出剩余的100並推動它而不是相同的百分比。
document.querySelector('button').addEventListener('click', () => { var number = document.querySelector('input').value; var percentage = 100 / number var somaPercentual = new Array(); for (i = 0; i < number; i++) { i < number - 1 ? somaPercentual.push(percentage) : somaPercentual.push(100 - somaPercentual.reduce((a, b) => { return a + b })); } console.log(somaPercentual) console.log(somaPercentual.reduce((a, b) => { return a + b })) })
<input type="number" value="3" /> <button>calc</button>
我希望你能找到這個有用的🙂
所以當你將100除以任何奇數時。 如果它不能完全整除,那么它將被存儲為64位浮點數,因此該值將不准確,當你添加時不會給你准確的100.但是如果你將它除以一個除以4.234之類的數字所以當你添加它會給你100。
你可以像這樣使用“保存圓”
console.clear(); function getPercentuals(number) { var roundingError = 0.0; var somaPercentual = new Array(); for (i = 0; i < number; i++) { var percentageExact = 100 / number; var percentageRound = round(percentageExact); roundingError += percentageExact - percentageRound; if (roundingError > 0.01) { percentageRound = round(percentageRound + 0.01); roundingError -= 0.01; } else if (roundingError < -0.01) { percentageRound = round(percentageRound - 0.01); roundingError += 0.01; } somaPercentual.push(percentageRound) } return somaPercentual; } function round(number) { return Math.round(number * Math.pow(10, 2)) / Math.pow(10, 2); } for (num = 1; num <= 100; num++) { var somaPercentual = getPercentuals(num); var sum = 0; somaPercentual.forEach(item => sum += item); console.log(num, somaPercentual, Math.round(sum)); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.