簡體   English   中英

用奇數除以100 - Javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM