Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 512253c

Browse files
committed
Refactor number formatting and rounding in article.md
1 parent 9327fc1 commit 512253c

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

‎1-js/05-data-types/02-number/article.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
let billion = 1000000000;
1717
```
1818

19-
เราสามารถใช้เครื่องหมายขีดล่าง `_` เป็นตัวคั่นได้:
19+
แต่ในชีวิตจริง เราอาจสับสนกับจํานวนศูนย์ได้ง่าย ในภาษาไทย เรามักใช้คําว่า "ล้าน" "สิบล้าน" "ร้อยล้าน" เพื่อช่วยในการอ่าน ในจาวาสคริปต์ เราสามารถใช้เครื่องหมายขีดล่าง `_` เป็นตัวคั่นได้:
2020

2121
```js
2222
let billion = 1_000_000_000;
2323
```
2424

2525
ในที่นี้ เครื่องหมายขีดล่าง `_` ทําหน้าที่เป็น "น้ําตาลทางไวยากรณ์" ช่วยให้ตัวเลขอ่านง่ายขึ้น เครื่องมือจาวาสคริปต์จะมองข้าม `_` ระหว่างตัวเลข ดังนั้นจึงเป็นตัวเลขหนึ่งพันล้านเหมือนกันกับข้างบน
2626

27-
ในชีวิตจริง เรามักหลีกเลี่ยงการเขียนเลขศูนย์ต่อกันยาวๆ เพราะขี้เกียจ เรามักเขียนแบบย่อ เช่น `"1bn"` สําหรับหนึ่งพันล้าน หรือ `"7.3bn"` สําหรับเจ็ดพันสามร้อยล้าน เช่นเดียวกับตัวเลขใหญ่ส่วนมาก
27+
ในชีวิตจริง เรามักหลีกเลี่ยงการเขียนเลขศูนย์ต่อกันยาวๆ เพราะขี้เกียจ เรามักเขียนแบบย่อ เช่น `"1พันล้าน"` สําหรับหนึ่งพันล้าน หรือ `"7.3พันล้าน"` สําหรับเจ็ดพันสามร้อยล้าน เช่นเดียวกับตัวเลขใหญ่ส่วนมาก
2828

2929
ในจาวาสคริปต์ เราสามารถย่อตัวเลขโดยเพิ่มตัวอักษร `"e"` ต่อท้ายและระบุจํานวนศูนย์:
3030

@@ -158,6 +158,7 @@ alert( num.toString(2) ); // 11111111
158158
1. คูณและหาร
159159

160160
เช่น เพื่อปัดเศษตัวเลขไปยังตําแหน่งทศนิยมที่ 2 เราสามารถคูณตัวเลขด้วย `100` (หรือกําลังของ 10 ที่มากกว่า) เรียกใช้ฟังก์ชันปัดเศษ แล้วหารกลับ
161+
161162
```js run
162163
let num = 1.23456;
163164
@@ -213,7 +214,7 @@ alert( 0.1 + 0.2 == 0.3 ); // เท็จ
213214
alert( 0.1 + 0.2 ); // 0.30000000000000004
214215
```
215216

216-
โอ้! มีผลกระทบมากกว่าการเปรียบเทียบที่ไม่ถูกต้อง ลองนึกภาพว่าคุณกําลังทําเว็บไซต์ขายของออนไลน์ และลูกค้าใส่สินค้ามูลค่า `0ドル.10` และ `0ドル.20` ลงในตะกร้า ยอดรวมจะเป็น `0ドル.30000000000000004` ซึ่งจะทําให้ทุกคนแปลกใจ
217+
โอ้! มีผลกระทบมากกว่าการเปรียบเทียบที่ไม่ถูกต้อง ลองนึกภาพว่าคุณกําลังทําเว็บไซต์ขายของออนไลน์ และลูกค้าใส่สินค้ามูลค่า `฿10` และ `฿20` ลงในตะกร้า ยอดรวมจะเป็น `฿30.000000000000004` ซึ่งจะทําให้ทุกคนแปลกใจ
217218

218219
แต่ทําไมถึงเกิดเรื่องนี้ขึ้น?
219220

@@ -249,7 +250,7 @@ let sum = 0.1 + 0.2;
249250
alert( sum.toFixed(2) ); // 0.30
250251
```
251252

252-
โปรดทราบว่า `toFixed` คืนค่าเป็นสตริงเสมอ มันรับประกันว่าจะมี 2 ตําแหน่งหลังจุดทศนิยม ซึ่งสะดวกถ้าเรามีร้านค้าออนไลน์และต้องแสดง `$0.30` สําหรับกรณีอื่นๆ เราสามารถใช้เครื่องหมายบวกเดี่ยวเพื่อแปลงเป็นตัวเลข:
253+
โปรดทราบว่า `toFixed` คืนค่าเป็นสตริงเสมอ มันรับประกันว่าจะมี 2 ตําแหน่งหลังจุดทศนิยม ซึ่งสะดวกถ้าเรามีร้านค้าออนไลน์และต้องแสดง `฿0.30` สําหรับกรณีอื่นๆ เราสามารถใช้เครื่องหมายบวกเดี่ยวเพื่อแปลงเป็นตัวเลข:
253254

254255
```js run
255256
let sum = 0.1 + 0.2;
@@ -265,7 +266,7 @@ alert( (0.28 * 100 + 0.14 * 100) / 100); // 0.4200000000000001
265266

266267
ดังนั้น วิธีคูณ/หารช่วยลดข้อผิดพลาด แต่ไม่ได้กําจัดออกทั้งหมด
267268

268-
บางครั้งเราอาจพยายามหลีกเลี่ยงเศษส่วนทั้งหมด เช่น ถ้าเราทําเรื่องร้านค้า เราอาจเก็บราคาเป็นเซนต์แทนดอลลาร์ แต่ถ้าเราลดราคา 30% ล่ะ? ในทางปฏิบัติ การหลีกเลี่ยงเศษส่วนทั้งหมดแทบจะเป็นไปไม่ได้ เพียงแค่ปัดเศษตัดทศนิยมเมื่อจําเป็น
269+
บางครั้งเราอาจพยายามหลีกเลี่ยงเศษส่วนทั้งหมด เช่น ถ้าเราทําเรื่องร้านค้า เราอาจเก็บราคาเป็นสตางค์แทนบาท แต่ถ้าเราลดราคา 30% ล่ะ? ในทางปฏิบัติ การหลีกเลี่ยงเศษส่วนทั้งหมดแทบจะเป็นไปไม่ได้ เพียงแค่ปัดเศษตัดทศนิยมเมื่อจําเป็น
269270

270271
````smart header="เรื่องแปลก"
271272
ลองรันโค้ดนี้ดู:
@@ -297,7 +298,6 @@ alert( 9999999999999999 ); // แสดง 10000000000000000
297298

298299
ค่าเหล่านี้เป็นประเภท `number` แต่ไม่ใช่ตัวเลข "ปกติ" จึงมีฟังก์ชันพิเศษสําหรับตรวจสอบ:
299300

300-
301301
- `isNaN(value)` แปลงอาร์กิวเมนต์เป็นตัวเลขแล้วทดสอบว่าเป็น `NaN`:
302302

303303
```js run
@@ -354,7 +354,7 @@ alert( +"100px" ); // NaN
354354

355355
ข้อยกเว้นเดียวคือช่องว่างที่อยู่ต้นหรือท้ายสตริง ซึ่งจะถูกละเลย
356356

357-
แต่ในชีวิตจริง เรามักมีค่าในหน่วยต่างๆ เช่น `"100px"` หรือ `"12pt"` ใน CSS และในหลายประเทศสัญลักษณ์สกุลเงินอยู่หลังจํานวน เช่น `"19"` และเราอยากแยกค่าตัวเลขออกมา
357+
แต่ในชีวิตจริง เรามักมีค่าในหน่วยต่างๆ เช่น `"100px"` หรือ `"12pt"` ใน CSS และในหลายประเทศสัญลักษณ์สกุลเงินอยู่หลังจํานวน เช่น `"19฿"` และเราอยากแยกค่าตัวเลขออกมา
358358

359359
นั่นคือสิ่งที่ `parseInt` และ `parseFloat` มีไว้
360360

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /