[ASP.NET]數字格式

  • 20645
  • 0

[ASP.NET]數字格式

通常在C#或VB.NET裡面,要對數字做四捨五入,甚至加上三位一撇的格式,

我們會使用string.Format()來幫忙做轉換。

 

但是,符合四捨五入位數,且數字加上三位一撇格式的有兩種寫法,這邊針對型態為decimal的數字字串,來進行格式化。

讓大家知道兩種pattern的差異。總共四組label跟textbox,來說明碰上不同數字,使用不同的pattern最後的差異。

aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NumFormat.aspx.cs" Inherits="NumFormat" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>未命名頁面</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="1230.456789用{0:N4}"></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <br />
        <asp:Label ID="Label2" runat="server" Text="1230用{0:N4}"></asp:Label>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <br />
        <asp:Label ID="Label3" runat="server" Text="1230.456789用{0:#,0.####}"></asp:Label>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
        <br />
        <asp:Label ID="Label4" runat="server" Text="1230用{0:#,0.####}"></asp:Label>
        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
</html>

cs:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class NumFormat : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string a = "1230.456789";
        string b = "1230";
        //string b = a.ToString("#.####");{0:#,0.#########}
        string c1 = string.Empty;
        string c2 = string.Empty;
        string d1 = string.Empty;
        string d2 = string.Empty;
        c1 = string.Format("{0:N4}", Convert.ToDecimal(a));
        c2 = string.Format("{0:N4}", Convert.ToDecimal(b));
        d1 = string.Format("{0:#,0.####}", Convert.ToDecimal(a));
        d2 = string.Format("{0:#,0.####}", Convert.ToDecimal(b));
        this.TextBox1.Text = c1;
        this.TextBox2.Text = c2;
        this.TextBox3.Text = d1;
        this.TextBox4.Text = d2;
    }
}

出來的結果:

數字格式轉換三位一撇

大家可以看到最大的差異,

就在”{0:N4}”不論怎樣,都會有小數四位,即使是整數,也會補四位小數0。

而在”{0:#,0.####}”則是超過四位小數,則四捨五入至小數第四位,不到四位小數,則不補0。

專案開發上,兩種情況都還蠻常遇到的,這邊隨筆記錄一下,不然下次又要翻很久了。

後記:補上如何將字串轉回需要的數值,一樣舉例decimal。

decimal val=decimal .Parse("65,536.1234", System.Globalization.NumberStyles.Number);

 


或許您會對下列培訓課程感興趣:

  1. 2021/1/9:【針對遺留代碼加入單元測試的藝術】202101 - 台北
  2. 2021/1/10:【極速開發+】 202101 台北
  3. 2021/2/20~2021/2/21:【演化式設計】測試驅動開發與持續重構 202102

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路