簡體   English   中英

我想出了一種將數字格式化為科學計數法的方法,我如何在需要時調用這個 function?

[英]I came up with a way to format numbers to scientific notation, how can I call this function whenever I need it?

我剛開始學習 js,到目前為止進展順利。 我遇到了一個問題,標題基本上應該告訴你你需要知道的一切,但不管怎樣,還是來了。

對於我最終想要實現的項目,我需要相當大的數字。 所以我想出了以下方法將它們格式化為科學記數法:

<script>

    var rawNumber = 172 ** 25;          // The number that shall be formatted into scientific notation
    var exponentDisplay = "e+";         // Self explainatory
    var numberRelevantDigits = 0;       // The digits displayed before the "e+"
    var numberExponent = 0;             // Self explainatory
    var formattedNumberDisplay = 0;     // What will be displayed
    
    
    function formatNumber() {                                                                   // The function triggered by clicking the button
        var numberExponent = Math.floor( Math.log(rawNumber) / Math.log(10) );                  // Calculating the exponent of the number in scientific notation
        var numberRelevantDigits = rawNumber / 10 ** numberExponent;                            // Dividing the number by 10 to the power of its exponent
        var numberRelevantDigits = numberRelevantDigits.toFixed(3);                             // Rounds the relevant digits to 3 decimals
        var formattedNumberDisplay = numberRelevantDigits + exponentDisplay + numberExponent;   // Adding the relevant digits, "e+" and the exponent into a string
        document.getElementById("formattedNumberDisplay").innerHTML = formattedNumberDisplay;   // Changing the display to the formatted number
        }
        
</script>

這按預期工作,但我不想在需要格式化數字時放置這段代碼。 有沒有一種方法(或者更確切地說:哪種方法)可以做到這一點,這樣我就可以在需要格式化數字時調用它 function? 即使我需要使用不同的變量?

讓我再次道歉,因為這可能已經回答了十幾次,但我什至不知道要尋找什么。

提前謝謝大家。

  • 創建一個js文件並在需要時導入它
  • 您還應該將變量傳遞給函數,而不是將它們聲明為 var
  • 在函數內部使用 const 和 let,如果不這樣做,將來可能會出現一些丑陋的錯誤。

您的文件 NumberFormater.js 將如下所示:

 export formatNumber = (
       rawNumber,
       exponentDisplay,
       numberRelevantDigits,
       numberExponent,
       formattedNumberDisplay    
      ) => {
        let numberExponent = Math.floor( Math.log(rawNumber) / Math.log(10) );                  // Calculating the exponent of the number in scientific notation
        let numberRelevantDigits = rawNumber / 10 ** numberExponent;                            // Dividing the number by 10 to the power of its exponent
        let numberRelevantDigits = numberRelevantDigits.toFixed(3);                             // Rounds the relevant digits to 3 decimals
        let formattedNumberDisplay = numberRelevantDigits + exponentDisplay + numberExponent;   // Adding the relevant digits, "e+" and the exponent into a string
        document.getElementById("formattedNumberDisplay").innerHTML = formattedNumberDisplay;   // Changing the display to the formatted number

      }

然后在需要時:

 import { formatNumber } from './NumberFormater.js';
 const rawNumber = 172 ** 25;          // The number that shall be formatted into scientific notation
 const exponentDisplay = "e+";         // Self explainatory
 const numberRelevantDigits = 0;       // The digits displayed before the "e+"
 const numberExponent = 0;             // Self explainatory
 const formattedNumberDisplay = 0;     // What will be displayed

 formatNumber( rawNumber, exponentDisplay, numberRelevantDigits, numberExponent, formattedNumberDisplay);

閱讀有關 js 模塊的更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules希望我有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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