การจัดรูปแบบทศนิยมเป็นทศนิยม 2 ตำแหน่ง


210

ขณะนี้ฉันกำลังสร้างโมดูลการขายสำหรับเว็บไซต์ลูกค้า จนถึงตอนนี้ฉันมีราคาขายเพื่อคำนวณอย่างสมบูรณ์แบบ แต่ที่ฉันติดอยู่คือการจัดรูปแบบผลลัพธ์เป็นทศนิยม 2 ตำแหน่ง

ฉันกำลังเรียกสิ่งนี้ในตัวแปรเพื่อให้ฉันสามารถผูกข้อมูลผลลัพธ์กับ listview ได้

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

ทุกคนสามารถแสดงวิธีจัดรูปแบบผลลัพธ์เป็นทศนิยม 2 ตำแหน่งได้หรือไม่? ขอบคุณมาก!


ตรวจสอบนี้ฉันไม่แน่ใจ แต่มันอาจจะทำงาน ToString ("#. ##");
Syeda

คำตอบ:


467

คุณสามารถส่งผ่านรูปแบบในToStringวิธีการเช่น:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

สตริงรูปแบบตัวเลขมาตรฐาน


38
"N2" และ "C2" จะเพิ่มตัวคั่นหลักพันขณะที่ "0.00" จะไม่
Marc K

5
ในกรณีที่คุณไม่แน่ใจ (ฉัน) ทุกวิธีสำหรับการจัดรูปแบบค่าทศนิยมจะให้การปัดเศษ
RenniePet

46

สิ่งแรกที่คุณต้องทำคือใช้decimalประเภทแทนfloatราคา การใช้floatไม่สามารถยอมรับได้อย่างนั้นเนื่องจากไม่สามารถแสดงเศษส่วนทศนิยมได้อย่างถูกต้อง

เมื่อคุณทำเสร็จแล้วDecimal.Round()สามารถใช้ในการปัดเศษเป็น 2 ตำแหน่ง


36

String.Format("{0:#,###.##}", value)

ตัวอย่างที่ซับซ้อนมากขึ้นจากการจัดรูปแบบสตริงใน C # :

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

สิ่งนี้จะส่งออก“ $ 1,240.00″ หากผ่าน 1243.50 มันจะส่งออกในรูปแบบเดียวกัน แต่อยู่ในวงเล็บถ้าจำนวนเป็นลบและจะส่งออกสตริง“ ศูนย์” ถ้าจำนวนเป็นศูนย์



4
string outString= number.ToString("####0.00");

1
มีความแตกต่างระหว่าง "0" และ "#" ในรูปแบบที่กำหนดเอง "0": แทนที่ศูนย์ด้วยตัวเลขที่สอดคล้องกันหากมีอยู่; มิฉะนั้นจะปรากฏศูนย์ในสตริงผลลัพธ์ "#": แทนที่สัญลักษณ์ "#" ด้วยตัวเลขที่ตรงกันหากมีอยู่ ไม่เช่นนั้นจะไม่มีตัวเลขปรากฏในสตริงผลลัพธ์ การอ้างอิง
劉鎮瑲

3

ดังที่ได้กล่าวไปแล้วคุณจะต้องใช้ผลลัพธ์ที่จัดรูปแบบ ซึ่งจะทำทุกสิ่งผ่านWrite(), WriteLine(), Format()และToString()วิธีการ

สิ่งที่ไม่ได้กล่าวถึงคือรูปแบบจุดคงที่ซึ่งอนุญาตให้ระบุจำนวนทศนิยม มันใช้ 'F' และจำนวนที่ตามมา 'F' คือจำนวนทศนิยมที่แสดงผลตามที่แสดงในตัวอย่าง

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions

2

นี้สำหรับกรณีที่คุณต้องการใช้สตริงหยัน ฉันโพสต์สิ่งนี้จริง ๆ เพราะฉันเหนื่อยกับการลองผิดลองถูกและในที่สุดก็เลื่อนดูเอกสารจำนวนมากทุกครั้งที่ฉันต้องจัดรูปแบบสเกลาร์

$"{1234.5678:0.00}"        "1234.57"        2 decimal places, notice that value is rounded
$"{1234.5678,10:0.00}"     "   1234.57"     right-aligned
$"{1234.5678,-10:0.00}"    "1234.57   "     left-aligned
$"{1234.5678:0.#####}"     "1234.5678"      5 optional digits after the decimal point
$"{1234.5678:0.00000}"     "1234.56780"     5 forced digits AFTER the decimal point, notice the trailing zero
$"{1234.5678:00000.00}"    "01234.57"       5 forced digits BEFORE the decimal point, notice the leading zero
$"{1234.5612:0}"           "1235"           as integer, notice that value is rounded
$"{1234.5678:F2}"          "1234.57"        standard fixed-point
$"{1234.5678:F5}"          "1234.56780"     5 digits after the decimal point, notice the trailing zero
$"{1234.5678:g2}"          "1.2e+03"        standard general with 2 meaningful digits, notice "e"
$"{1234.5678:G2}"          "1.2E+03"        standard general with 2 meaningful digits, notice "E"
$"{1234.5678:G3}"          "1.23E+03"       standard general with 3 meaningful digits
$"{1234.5678:G5}"          "1234.6"         standard general with 5 meaningful digits
$"{1234.5678:e2}"          "1.23e+003"      standard exponential with 2 digits after the decimal point, notice "e"
$"{1234.5678:E3}"          "1.235E+003"     standard exponential with 3 digits after the decimal point, notice "E"
$"{1234.5678:N2}"          "1,234.57"       standard numeric, notice the comma
$"{1234.5678:C2}"          "$1,234.57"      standard currency, notice the dollar sign
$"{1234.5678:P2}"          "123,456.78 %"   standard percent, notice that value is multiplied by 100
$"{1234.5678:2}"           "2"              :)

คำเตือนประสิทธิภาพ

สตริง Interpolated ช้า จากประสบการณ์ของฉันนี่คือการสั่งซื้อ (เร็วไปช้า):

  1. value.ToString(format)+" blah blah"
  2. string.Format("{0:format} blah blah", value)
  3. $"{value:format} blah blah"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.