THẢO LUẬN

@quangpv thank 2 bác ❤️

0

Có công thức để tính toán đó, bạn tham khảo cái này

https://www.geeksforgeeks.org/ieee-standard-754-floating-point-numbers/

Convert online: https://baseconvert.com/ieee-754-floating-point

Tính toán cụ thể, mình từng note lại kiểu này hi vọng bạn hiểu sau khi đọc link trên.

` không dùng chuẩn

0.1 ->

bin: 0.00011001100110011001100110011001100110011001100110011010.....

dec: 0.09999..

chuẩn IEEE754

0.1 ->

binary: 0 01111011 10011001100110011001101 [32bit]

dec: 0.100000001490116119384765625

==================================================================

tính 0.1 theo IEEE 754 - 32 bit,

chọn faction (mantissa) [chỉ chọn 23 hoặc 52 bit], mình chọn 23 bit (52 bit cho IEEE754 - 64bit)

=> sign = 0 [0 cho không dấu, 1 cho có dấu]

=> phần nguyên là 0, không cần đổi sang binary

phần thập phân nhân 2 cho tới khi bằng 1.0

=> 0.0001 10011001100110011001100110011001... [vô hạn]

=> exponent = 2^(-4) // dịch chuyển dấu chấm động sang phải, dịch [trái là + /phải là -] cho đến khi có dạng 1.xyz => 1.10011001100110011001100110011001......

=> biased exponent = 127 + (-4) = 123 [binary: 01111011]

bias cho 32bit = 127, 64bit = 1023

faction: '100110011001100110011001'.length // 24, nhưng bit thứ 24 có số '1' nên bit thứ 23 phải làm tròn lên 1 (Có thuật toán làm tròn mà mình cũng không rõ cơ chế, quá phức tạp, nếu bạn check ở dạng IEEE 754 - 64 bit bạn sẽ thấy khác biệt - chuẩn xác hơn)

=> mantissa: '10011001100110011001101'

<sign> <biased exponent [dạng binary]> <mantissa>

=> 0 01111011 10011001100110011001101

decimal: 0.100000001490116119384765625

nhưng default precision của javascript thể hiện tới 19 kí tự, default precision của PHP chỉ tới 17 kí tự (muốn đúng như js phải sửa trong php.ini)

=> làm tròn dẫn tới decimal thể hiện chỉ là : 0.10000000149011612

=> Ý này cực kì quan trọng, khi bạn tính toán lý thuyết đúng nhưng sẽ bối rối bởi những ngôn ngữ lập trình format khác nhau `

Capture.JPG

0

image.png Bác xem thử ảnh này thử. Với số âm ta cũng làm tương tự, nhưng có điều sign = 1

0
Avatar
đã bình luận cho bài viết
thg 6 27, 2023 9:30 SA

tks

0

Mình có một câu hỏi mong được bạn giải đáp. Do mình dev FE và chưa có nhiều kinh nghiệm về BE và Sec nên có thể câu hỏi sẽ hơi ngớ ngẩn có gì mong bạn thông cảm.

  1. Về việc BE cần trả thêm secret value sau khi nhập OTP để dùng cho Payment request tiếp theo có cần thiết không ạ. Tại sao mình k thể dùng chính OTP làm secret key cho Payment request mà lại cần tách làm 2 bước nhập OTP để lấy secrey key sau đó lấy secret key để thực hiện payment request tiếp theo.
  2. Ở mục 1.2 bạn có nhắc đến việc chỉnh sửa http response, điều này có thực sự khả thi k ạ, nếu nó khả thi thì làm sao phía FE có thể đối phó được với trò này nhỉ
0
thg 6 27, 2023 8:00 SA

có phần 3 chưa bạn

0
thg 6 27, 2023 6:57 SA

Sao ko có css, js vậy ta

0
thg 6 27, 2023 3:51 SA

Package dompdf tip

Mình sử dụng font này có thể generate cả tiếng Nhật và tiếng Việt https://freefontsdownload.net/free-arial-unicode-ms-font-36926.htm

Nhưng khi sử dụng font này thì gặp vấn đề khi download file pdf về thì khá nặng

=> Mình đã fix bằng cách thêm setOptions(['isFontSubsettingEnabled' => true, 'isRemoteEnabled' => true]), isFontSubsettingEnabled được dùng để không gen file font trên vào pdf, isRemoteEnabled dùng để nếu bên trong file pdf có link hình ảnh thì sẽ không bị bỏ qua khi sử dụng isFontSubsettingEnabled

0

Bài viết hay 😍

+1
thg 6 27, 2023 1:18 SA

em chạy docker-compose -f docker-compose.with-flogs.yml up -d và docker-compose -f docker-compose.agents.yml up -d không được ạ, em chạy tuần tự docker-compose up -d và tiếp theo là 2 cái kia

0
Avatar
đã bình luận cho bài viết
thg 6 27, 2023 12:58 SA

tks

0

thank bạn đã có bài viết chất lượng

0

?? check cả trường hợp false, NaN nữa nhé bạn. false ?? 1 = false

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí