JavaScript數字轉字符

一、基本轉換方法

JavaScript中通過String()、.toString()、+”、”+等方式可以將數字轉換為字符串。例如:

var num = 12345;
var str1 = String(num);
var str2 = num.toString();
var str3 = num + '';
var str4 = '' + num;

console.log(str1);  // "12345"
console.log(str2);  // "12345"
console.log(str3);  // "12345"
console.log(str4);  // "12345"

以上四種轉換方式都可以將數字轉換為字符串類型,其中String()是將數字轉換為字符串的最簡便方式,num.toString()是將數字轉換為字符串的經典方式,num+”、”+num則是比較暴力的轉換方式,它們會將數字直接拼接在一個空字符串中。

二、數字格式化轉換

在實際開發中,我們經常需要將數字格式化,比如千分位格式化、保留小數等操作。JavaScript提供了Intl.NumberFormat(), toLocaleString(),toFixed()等方法可以進行格式化轉換。

1. Intl.NumberFormat()

Intl.NumberFormat()是ES6中引入的一個新對象,它用于格式化數字,支持國際化格式化,並且包括幾乎所有的數字格式化需求。

var num = 1234567.89;

var formatter1 = new Intl.NumberFormat(); // 默認格式
console.log(formatter1.format(num));  // '1,234,567.89'

var formatter2 = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
console.log(formatter2.format(num));  // '$1,234,567.89'

var formatter3 = new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
console.log(formatter3.format(num));  // '1.234.567,89'

以上代碼中,formatter1為默認格式,formatter2為貨幣格式,formatter3為保留兩位小數。

2. toLocaleString()

toLocaleString()是JavaScript內置方法,支持格式化數字,並且同樣支持國際化格式化。

var num = 1234567.89;

console.log(num.toLocaleString('en-US'));  // "1,234,567.89"
console.log(num.toLocaleString('de-DE'));  // "1.234.567,89"
console.log(num.toLocaleString('zh-Hans-CN'));  // "1,234,567.89"

以上代碼中第一行為美式格式,第二行為德國格式,第三行為中國格式。

3. toFixed()

toFixed()是將數字保留指定小數位數,並且返回字符串類型的方法。

var num = 12.3456;

console.log(num.toFixed(0));   // '12'
console.log(num.toFixed(1));   // '12.3'
console.log(num.toFixed(2));   // '12.35'
console.log(num.toFixed(3));   // '12.346'
console.log(num.toFixed(4));   // '12.3456'

以上代碼中,toFixed()方法的參數為要保留的小數位數,如果參數為空,或者不是數字,則默認保留0位小數。

三、進制轉換

JavaScript中支持十進制、二進制、八進制、十六進制等多種數字進制格式,以及可以將不同進制的數字互相轉化。

1. 進制轉換方法

parseInt()和parseFloat()是兩個常用的進制轉換方法。

var num1 = parseInt('10100', 2);       // 將二進制轉換為十進制
var num2 = parseInt('12', 8);          // 將八進制轉換為十進制
var num3 = parseInt('2a', 16);         // 將十六進制轉換為十進制
var num4 = parseFloat('12.34');        // 將字符串轉換為小數

console.log(num1);  // 20
console.log(num2);  // 10
console.log(num3);  // 42
console.log(num4);  // 12.34

2. 進制轉換實例

將十進制轉換為其他進制的方法,可以使用toString()方法和數學運算。

var num = 12345;

console.log(num.toString(2));  // "11000000111001",將十進制轉換為二進制
console.log(num.toString(8));  // "30071",將十進制轉換為八進制
console.log(num.toString(16)); // "3039",將十進制轉換為十六進制
console.log((4567).toString(36)); // "ax1",將十進制轉換為三十六進制

四、數字轉字符在實際開發中的應用

JavaScript數字轉字符在實際開發中非常常見,比如:

  • 將價格或者金額數字格式化,並且加上貨幣符號
  • 將百分比數字格式化,比如將0.1234格式化為12.34%
  • 將數字轉換為漢字,比如將1234.56轉換為一千二百三十四點五六
  • 將數字轉換為星期幾、月份等

1. 實現價格或金額數字格式化

var num = 1234567.89;  
var formatter = new Intl.NumberFormat('zh-Hans-CN', { style: 'currency', currency: 'CNY' });
var money = formatter.format(num);   

console.log(money);  // '¥1,234,567.89'

以上代碼將1234567.89格式化為¥1,234,567.89,其中’zh-Hans-CN’表示使用簡體中文,style: ‘currency’表示使用貨幣格式,currency: ‘CNY’表示貨幣類型為CNY(人民幣)。

2. 實現百分比數字格式化

var num = 0.1234;
var formatter = new Intl.NumberFormat('zh-Hans-CN', { style: 'percent' });
var percent = formatter.format(num);

console.log(percent);  // '12.34%'

以上代碼將0.1234格式化為12.34%。

3. 實現數字轉換為漢字

以下是一個簡化版的數字轉換為漢字的函數,可以將數字轉換為中文大寫形式。

function NumToChinese(num) {
    if (isNaN(num)) return '';
    var strOutput = '';
    var strUnit = '仟佰拾億仟佰拾萬仟佰拾元角分';
    num += "00"; 
    var intPos = num.indexOf('.');
    if (intPos >= 0)
        num = num.substring(0, intPos) + num.substr(intPos + 1, 2);
    strUnit = strUnit.substr(strUnit.length - num.length);
    for (var i = 0; i < num.length; i++)
        strOutput += '零壹貳叄肆伍陸柒捌玖'.substr(num.substr(i, 1), 1) + strUnit.substr(i, 1);
    return strOutput.replace(/零角零分$/g, '').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([億|萬])/g, '$1').replace(/零+元/, '元').replace(/億零{0,3}萬/, '億').replace(/^元/, '零元');
}

console.log(NumToChinese(1234.56));  // "壹仟貳佰叄拾肆元伍角陸分"

4. 實現數字轉換為星期幾或月份

以下為簡化版的星期幾和月份的中英文轉換函數。

var weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
function getWeekdayEnglish(weekdayIndex) {
   return weekdays[weekdayIndex];
}

var weekdaysCN = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
function getWeekdayChinese(weekdayIndex) {
   return weekdaysCN[weekdayIndex];
}

var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
function getMonthEnglish(monthIndex) {
   return months[monthIndex];
}

var monthsCN = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
function getMonthChinese(monthIndex) {
   return monthsCN[monthIndex];
}

console.log(getWeekdayEnglish(3));   // "Wednesday"
console.log(getWeekdayChinese(3));   // "星期三"
console.log(getMonthEnglish(4));     // "May"
console.log(getMonthChinese(11));    // "十二月"

五、總結

這篇文章對JavaScript數字轉字符做了詳細闡述,介紹了基本轉換方法、數字格式化轉換、進制轉換以及實際開發應用等方面。在實際開發中,應該根據具體需要選擇合適的轉換方法,合理運用數字轉字符可以為開發帶來便利和效益。

原創文章,作者:ANAZH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/369700.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ANAZH的頭像ANAZH
上一篇 2025-04-13 11:45
下一篇 2025-04-13 11:45

相關推薦

  • 英語年齡用連字符號(Hyphenation for English Age)

    英語年齡通常使用連字符號表示,比如 “five-year-old boy”。本文將從多個方面探討英語年齡的連字符使用問題。 一、英語年齡的表達方式 英語中表…

    編程 2025-04-29
  • Python循環符合要求數字求和

    這篇文章將詳細介紹如何通過Python循環符合要求數字求和。如果你想用Python求和但又不想手動輸入數字,那麼本文將是一個不錯的選擇。 一、使用while循環實現求和 sum =…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python基本數字類型

    本文將介紹Python中基本數字類型,包括整型、布爾型、浮點型、複數型,並提供相應的代碼示例以便讀者更好的理解。 一、整型 整型即整數類型,Python中的整型沒有大小限制,所以可…

    編程 2025-04-29
  • Python打印數字三角形

    本文將詳細闡述如何使用Python打印數字三角形,包括從基本代碼實現到進階操作的應用。通過本文的學習,您可以掌握Python的基礎語法,同時加深對Python循環和函數的理解,提高…

    編程 2025-04-29
  • Python數字求和怎麼寫

    在Python中實現數字求和非常簡單,下面將從多個方面對Python數字求和的實現方法做詳細的闡述。 一、直接使用“+”符號進行求和 a = 10 b = 20 c = a + b…

    編程 2025-04-29
  • Python提取連續數字

    本文將介紹如何使用Python提取一個字符串中的連續數字。 一、使用正則表達式提取 正則表達式是一種可以匹配文本片段的模式。Python內置了re模塊,可以使用正則表達式進行字符串…

    編程 2025-04-29
  • Python計算中文字符個數

    本文將從多個方面對Python計算中文字符個數進行詳細的闡述,包括字符串長度計算、正則表達式統計和模塊使用方法等內容。 一、字符串長度計算 在Python中,計算字符串長度是非常容…

    編程 2025-04-29
  • Python中如何判斷字符為數字

    判斷字符是否為數字是Python編程中常見的需求,本文將從多個方面詳細闡述如何使用Python進行字符判斷。 一、isdigit()函數判斷字符是否為數字 Python中可以使用i…

    編程 2025-04-29

發表回復

登錄後才能評論