簡體   English   中英

數字中的前導和尾隨零

[英]Leading and trailing zeros in numbers

我正在開發一個項目,我需要通過以下方式格式化傳入的數字:

###.###

但是我注意到了一些我沒想到的結果。 以下是我沒有收到錯誤的意義:

 console.log(07); // or in my case: console.log(007); 

當然,它不會在值本身中保留'00',因為該值實際上是7。

以下情況也是如此:

 console.log(7.0); // or in my case: console.log(7.000); 

JavaScript了解我在做什么,但最終實際值將是7,可以通過以下方式證明:

  const leadingValue = 007; const trailingValue = 7.00; console.log(leadingValue, trailingValue); // both are exactly 7 

但我發現好奇的是以下內容:當我將這兩個結合起來時,我得到一個語法錯誤:

// but not this:
console.log(007.000);

1)有人可以解釋為什么這不起作用?

我正在嘗試找到一個解決方案,以精確的精度存儲數字/浮點數而不使用字符串。

2)JS / NodeJS甚至TypeScript中有沒有辦法在不使用字符串的情況下執行此操作?

我目前要做的是接收輸入,掃描格式並將其存儲為單獨的屬性,然后解析傳入的值,因為parseInt('007.000')確實有效。 並且當用戶想要獲得該值時,不幸地將其返回給用戶...在字符串中。

1) 007.000是一個語法錯誤,因為007是一個八進制整數文字 ,然后你要附加一個浮點部分。 (嘗試console.log(010) 。這打印8.)

2)以下是使用Intl.NumberFormat實現格式化的方法...

 var myformat = new Intl.NumberFormat('en-US', { minimumIntegerDigits: 3, minimumFractionDigits: 3 }); console.log(myformat.format(7)); // prints 007.000 

你好

您可以使用使用字符串函數.split .padStart和.padEnd的aproach

在MDN上搜索

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects / String / padStart https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd

這里有一個例子:

 const x = 12.1; function formatNumber( unformatedNumber) { const desiredDecimalPad = 3; const desiredNonDecimalPad = 3; const unformatedNumberString = unformatedNumber.toString(); const unformatedNumberArr = unformatedNumberString.split('.'); const decimalStartPadded = unformatedNumberArr[0].padStart(desiredDecimalPad, '0'); const nonDecimalEndPadded = unformatedNumberArr[1].padEnd(desiredNonDecimalPad, '0'); const formatedNumberString = decimalStartPadded + '.' + nonDecimalEndPadded; return formatedNumberString; } console.log(formatNumber(x)) 

暫無
暫無

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

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