1.2e+13 là bao nhiêu

7.Cho ô C1, C2, C3 lần lượt có các giá trị 4,5,9. Hãy chọn công thức đúng nhất để tính tổng ba ô đó. 

=C1+C2+C3

8.Để nhập biểu thức [20+4]:2+[5-2]x5 vào Excel, công thức nào sau đây đúng:

=[20+4]/2+[5-2]*5

9.Giả sử ô C1 có công thức như sau: =A1+B1. Nếu ta sao chép công thức này sang ô D3 thì trong ô D3 sẽ là?

Data Mashup, đào tạo Power BI cho doanh nghiệp, đào tạo Power Query, M Language, Power BI Training, Power Query, Power Query M, Power Query Training, Query Editor

Tiếp theo trong phần bài viết về kiểu dữ liệu Power Query M là dạng số.

Có thể nghĩ rằng làm việc với các con số sẽ đơn giản đến mức chúng ta hầu như không cần phải nói về chúng. Tuy nhiên, có một điều có thể xảy ra: nếu không cẩn thận, bạn có thể kết thúc với việc số học không tạo ra kết quả như mong đợi! Sau khi xem qua cú pháp của M cho các ký tự số, chúng ta sẽ nói về những vấn đề tiềm ẩn này và cách không để nó cho ta các kết quả không mong muốn.

Kiểu dữ liệu số học [Numbers]

Cú pháp

Số nguyên văn có thể được nhập dưới dạng số nguyên:

0
2
4
-7

Số thập phân:

1.5
0.5
.5

Ở dạng hàm mũ:

1.2e10
1.2e-5
1.2E-5

Và sử dụng cú pháp thập lục phân:

0xFF
0xff
0XFF
0Xff

Ví dụ ở trên, hãy lưu ý cách cả chỉ số mũ [“e”] và các ký tự được sử dụng trong hệ thập lục phân không phân biệt chữ hoa chữ thường. Được phép viết hoa và viết thường và hoạt động giống nhau.

Trong trường hợp các số có dấu thập phân thì không cần chữ số trước dấu thập phân nhưng phải có ít nhất một chữ số sau dấu thập phân.

.5     // hợp lệ - không có chữ số nào trước số thập phân
.2e25  // hợp lệ - không có chữ số nào trước số thập phân
5.     // không hợp lệ - phải có ít nhất một chữ số sau số thập phân
2.e25  // không hợp lệ - phải có ít nhất một chữ số sau số thập phân 

Số đặc biệt

Ngoài các số thông thường, các “số” đặc biệt và không phải số cũng được hỗ trợ.

#infinity  // được tạo bởi một biểu thức như 1/0
#nan       // được tạo bởi một biểu thức như 0/0 [not-a-number]

Số âm

Các số âm bằng cách sử dụng toán tử trừ một bậc – một cách nói khác để nói rằng một số có thể được thay đổi thành số âm bằng cách thêm trước nó với một dấu trừ.

-5
-5e-2
-#infinity    // được tạo ra bởi một biểu thức như -1/0

[Lưu ý: Theo cú pháp, có thể viết -#nan. Tuy nhiên điều này sẽ không phủ nhận not-a-number. Thay vào đó, dấu trừ '-' sẽ lặng lẽ bị bỏ qua.

Phong cách viết số học [đôi khi chỉ là vui nhưng có thể là hậu quả]

Các cách khác nhau được sử dụng để gõ số chỉ là theo phong cách. Các tùy chọn khác nhau được cung cấp như một sự thuận. Cú pháp của mỗi kiểu tạo ra một biểu thức tạo ra một giá trị số. Nếu hai biểu thức đánh giá bằng cùng một số, giá trị của chúng bằng nhau ngay cả khi các biểu thức được viết bằng các kiểu cú pháp khác nhau. Tuy nhiên với M thì đúng nhưng với chúng ta có thể sẽ gây nhầm lần khi xử lý với dữ liệu.

0x0A = 10  // true vì cả hai đều tạo ra giá trị là 10 

Độ chính xác số học, Chính xác như thế nào là đủ chính xác?

Với cú pháp chữ số, chúng ta đi đến điểm tiềm năng khi làm việc với các số trong M:

Cả toán tử số học [+, -, *, /] và đẳng thức [=] luôn sử dụng độ chính xác kép. Độ chính xác kép hy sinh một số độ chính xác vì lợi ích của hiệu quả. Độ chính xác thập phân có khả năng chậm hơn nhưng tạo ra kết quả chính xác hơn.

Chúng ta đang nói rằng hai số cộng lại với nhau có thể không phải lúc nào cũng bằng tổng của hai số đó!

0.1 + 0.2 phải bằng bao nhiêu? 0.3, đúng. Còn một số rất lớn cộng với 1 thì sao, nó không bằng số rất lớn đó cộng với 1! Chà, cả hai đều không nhất thiết phải như vậy với độ chính xác gấp đôi:

0.1 + 0.2   // 0.30000000000000004
10000000000000000 + 1    // 10000000000000000

Ngược lại, độ chính xác thập phân tạo ra các tổng chính xác.

Value.Add[0.1, 0.2, Precision.Decimal] // 0.3
Value.Add[10000000000000000, 1, Precision.Decimal] // 10000000000000001

Ở trên, phương thức hàm thư viện Value.Add đã được sử dụng để thực hiện phép cộng bằng cách sử dụng độ chính xác thập phân. Ngoài ra còn có các phương pháp Giá trị cho phép trừ, nhân và chia.

Sự khác biệt giữa hai cách trên cũng có thể hiển thị khi thực hiện so sánh. Lưu ý cách biểu thức thứ hai trong mỗi cặp sử dụng Value.Compare để chỉ định việc sử dụng độ chính xác thập phân.

1.5
0.5
.5
0

Hãy nói về độ chính xác là gì, trong chừng mực của máy tính và các con số, và sau đó là lý do tại sao máy tính cung cấp các lựa chọn về độ chính xác thay vì chỉ và luôn sử dụng độ chính xác nhất có thể.

Hãy nhớ lại ở trường trung học, chúng ta đã học được rằng 1/3 không thể được biểu diễn chính xác dưới dạng số thập phân hữu hạn. Đó là 0.33333333…, với ba lặp lại mãi mãi. Vì chúng ta không thể viết vô hạn số ba, nếu chúng ta định làm việc với 1/3 ở dạng thập phân, chúng ta phải chọn mức độ chính xác đủ tốt cho tình huống hiện tại. Ví dụ: nếu một mặt hàng được định giá là 3 cho một đồng, chúng ta có thể biểu thị giá của nó ở dạng thập phân là 0.33 đồng.

Bạn có nhận thấy sự mất độ chính xác không? Mỗi món có giá 1/3 đồng. Tuy nhiên, nếu bạn nhân 0.33 đồng với 3, kết quả không phải là 1 đồng. Thay vào đó, đó là 0.99. Đã xảy ra khoản lỗ 0.01. Khoản lỗ này có thể tránh được nếu chúng ta làm việc với giá ở dạng phân số [1/3 đồng * 3 = chính xác là 1 đồng]. Tuy nhiên, sẽ thuận tiện hơn khi làm việc với số tiền ở dạng thập phân, thường tiện lợi hơn rất nhiều nên chúng ta có thể chấp nhận được một sự mất mát nhỏ về độ chính xác để có thể làm điều đó.

Lưu ý rằng việc mất độ chính xác không phải do chúng ta bất cẩn trong cách chúng ta thực hiện số học. Thay vào đó, sự thiếu chính xác xuất phát từ thực tế là hệ thống số chúng ta đã sử dụng [thập phân] không thể biểu thị chính xác giá trị phân số 1/3. Để khắc phục hạn chế này, người ta đã sử dụng một giá trị gần đúng [0.33]. Mặc dù tất cả các phép toán được thực hiện trên phép tính gần đúng đều đúng 100% và kết quả có thể dự đoán được 100%, nhưng kết quả không chính xác 100% vì nó dựa trên phép tính gần đúng.

Điều này cũng giống với máy tính. Tóm lại, để làm cho một câu chuyện dài trở nên ngắn gọn, tương tự như cách chúng ta có thể sử dụng phân số hoặc số thập phân để biểu diễn số, máy tính cũng có nhiều cách để xử lý các con số. Sự lựa chọn của chúng ta giữa số thập phân và phân số liên quan đến việc quyết định giữa thuận tiện hơn để làm việc và chính xác. Với máy tính, các tùy chọn là khác nhau, bởi vì máy tính suy nghĩ khác với não người, nhưng sự đánh đổi giống nhau: sự tiện lợi so với độ chính xác vì các bản kết hợp Power Query được thực thi bởi máy tính, lựa chọn tương tự cũng áp dụng cho việc làm việc với các số trong M.

Cụ thể, với M độ chính xác kép [tuân theo Tiêu chuẩn IEEE Standard for Floating-Point Arithmetic [IEEE 754-2008]] thuận tiện hơn cho máy tính làm việc, mang lại tiềm năng cho hiệu suất tính toán tốt hơn và lưu trữ hiệu quả hơn. Độ chính xác thập phân chính xác hơn.

Vậy chúng ta chọn cái nào?

Có lẽ sẽ hữu ích khi nghĩ về nó theo cách này: Nếu bạn đang so sánh khoảng cách giữa các ngôi sao khác nhau, thì liệu độ chính xác đến từng sắc thái nhỏ nhất có quan trọng không? Có thể là không vì mức độ chính xác đó có thể không liên quan nếu xét đến quy mô của những con số bạn đang làm việc [hàng nghìn tỷ dặm]. Trong bối cảnh đó, mất đi một chút chính xác để nâng cao hiệu quả có lẽ là một lựa chọn hợp lý. Mặt khác, bạn có thể không muốn ngân hàng của mình hy sinh một chút độ chính xác để cải thiện hiệu quả khi họ tính toán số dư tài khoản ngân hàng của bạn. Trong bối cảnh này, độ chính xác là điều tối quan trọng, bất kể chi phí hiệu quả là bao nhiêu.

Trong M, độ chính xác này đạt được bằng cách sử dụng các hàm Giá trị để quy định độ chính xác thập phân [như một số ví dụ ở trên đã chứng minh]. Sự cần thiết của việc sử dụng các hàm Giá trị để đạt được độ chính xác thập phân áp dụng ngay cả khi các số trong tay đã được lưu trữ dưới dạng số thập phân hoặc dưới dạng số không phải dấu phẩy động. Các toán tử so sánh và số học tiêu chuẩn chuyển đổi đầu vào của chúng thành độ chính xác kép, bất kể độ chính xác lưu trữ của đối số nguồn. Nếu bạn muốn có độ chính xác thập phân cho các phép toán, cách duy nhất để lấy nó là chỉ định nó!

Giải pháp thay thế thứ ba

Có một lựa chọn thỏa hiệp. Nếu bạn muốn những lợi ích của độ chính xác kép nhưng với độ chính xác cao hơn, đôi khi bạn có thể đạt được điều này bằng cách làm tròn. Nếu vấn đề chúng ta đang cố gắng tránh là các số ‘hơi’ không chính xác sau dấu thập phân và chúng ta biết rằng chỉ có một số vị trí thập phân cố định mà chúng ta quan tâm, chúng ta có thể làm tròn những số thập phân không liên quan và chuyển đổi giá trị đóng [giá trị cuối] – kết quả chưa chính xác thành chính xác những gì chúng ta mong đợi.

Quay lại ví dụ về việc thêm 0.1 + 0.2. Hãy giả sử những giá trị này đại diện cho số tiền trong đó chỉ có tối đa hai chữ số đầu tiên sau dấu thập phân. Bằng cách làm tròn các chữ số không liên quan, chúng ta có thể chuyển đổi kết quả dài ‘xấu xí’ của phép tính độ chính xác kép thành kết quả chính xác 100% mà chúng ta mong đợi.

1.5
0.5
.5
1

Nhưng làm tròn không phải lúc nào cũng là giải pháp tuyệt vời.

Hãy quay lại ví dụ 1/3 dưới dạng số thập phân. Điều gì sẽ xảy ra nếu chúng ta chuyển đổi phân số này thành 0.333 thay vì 0.33 ? Nhân với 0.333 sẽ tạo ra 0.999 được làm tròn đến hai chữ số là 1.

Tốt, nhưng bây giờ hãy thử điều này: Nhân 10 mặt hàng với giá 0.333. Tổng là 3.33. Thêm 10 nữa, rồi thêm 10 nữa. Tổng là 9.99 [3.33 + 3.33 + 3.33]. Tuy nhiên, số tiền đó đại diện cho 30 mặt hàng với giá 1/3 mỗi mặt hàng, tương đương với tổng số chính xác là 10. Oái oăm! Làm tròn không giúp được gì cho chúng ta ở đây.

Làm tròn là một tùy chọn của bạn khi nó hữu ích, nhưng hãy cẩn thận rằng bạn không coi nó là “một cách phù hợp với tất cả”. Sử dụng nó có thể rất tuyệt vời nếu bạn hiểu chính xác nó sẽ hoạt động như thế nào trong ngữ cảnh của bạn. Nếu không, sử dụng nó có thể lại là kết quả sai!

Chỉ định các kiểu phụ cụ thể

Khi làm việc với một bảng trong giao diện người dùng của Power Query, bạn có thể nhận thấy rằng có tùy chọn Change Type cho mỗi cột.

Bốn tùy chọn cho các con số:

  • Số thập phân [Decimal Number] [floating-point decimal number: số thập phân dấu phẩy động]
  • Tiền tệ [Currency] [số chính xác cố định cho phép 4 chữ số sau chữ số thập phân]
  • Số nguyên [Whole Number] [số không được phép có dấu thập phân]
  • Tỷ lệ phần trăm [Percentage] [số trong đó 0 cho biết 0%, 1.0 = 100%, -1.0 = -100%, 2.5 = 250%, v.v.]

Số thập phân tương ứng với kiểu số cơ sở của M, những cái khác là kiểu con của kiểu số. Việc chọn một trong các tùy chọn này sẽ gắn thẻ cột chứa các giá trị của kiểu / kiểu con cụ thể và chuyển đổi dữ liệu trong cột đó thành kiểu hoặc kiểu con đó. Ví dụ: nếu bạn chỉ định một cột là Số nguyên, cột đó sẽ được gắn là chứa số nguyên và bất kỳ số nào trong cột đó có các thành phần thập phân sẽ được làm tròn [ví dụ: 1.75 trở thành 2].

Việc gắn kiểu / kiểu phụ này cũng có thể có những lợi ích [đáng kể] bên ngoài Power Query. Khi dữ liệu xuất ra bởi mashup của bạn cho công cụ lưu trữ Power Query [ví dụ: Microsoft Excel, Microsoft Power BI hoặc Microsoft SSIS], công cụ đó có thể sử dụng thông tin loại này để xử lý tốt hơn các giá trị trong cột, có khả năng dẫn đến lưu trữ hiệu quả hơn và tính toán cũng như cải thiện kiểu định dạng của các giá trị của cột. Trong trường hợp thứ hai, môi trường máy chủ [hoặc máy tính cá nhân] có thể bắt đầu ký hiệu đô la [hoặc chỉ báo tiền tệ phù hợp với văn hóa hoặc quốc gia khác] cho các số từ một cột được định dạng là tiền tệ.

Kết luận

Chà! Bao hàm kiểu các ký tự số là một phần dễ dàng! nội dung về độ chính xác tuy dài nhưng rất quan trọng. Hy vọng rằng bạn đã có đủ kiến thức để có thể đưa ra các quyết định sáng suốt liên quan đến vấn đề đó. Và đừng quên cân nhắc kỹ lưỡng để đảm bảo rằng tất cả các cột trong bảng chứa số đều được đặt kiểu của chúng thành lựa chọn thích hợp nhất.

Chủ Đề