คุณต้องการเก็บสกุลเงินของคุณlong
และคำนวณสกุลเงินของคุณdouble
อย่างน้อยก็เป็นข้อมูลสำรอง คุณต้องการให้ทุกการทำธุรกรรมlong
ที่จะใช้สถานที่ที่เป็น
เหตุผลที่คุณต้องการเก็บสกุลเงินไว้long
คือคุณไม่ต้องการเสียสกุลเงินใด ๆ
สมมติว่าคุณใช้double
และคุณไม่มีเงิน มีคนให้คุณสามสลึงแล้วนำพวกเขากลับมา
You: 0.1+0.1+0.1-0.1-0.1-0.1 = 2.7755575615628914E-17
มันไม่เจ๋งขนาดนั้น บางทีคนที่มีเงิน 10 ดอลล่าร์ต้องการที่จะให้โชคลาภของพวกเขาด้วยการให้สามเซนต์ครั้งแรกของคุณและจากนั้นให้ $ 9.70 กับคนอื่น
Them: 10.0-0.1-0.1-0.1-9.7 = 1.7763568394002505E-15
จากนั้นคุณให้สลึงกลับคืนมาให้พวกเขา:
Them: ...+0.1+0.1+0.1 = 0.3000000000000018
นี่มันหัก
ทีนี้ลองใช้เวลานานแล้วเราจะติดตามสิบเซ็นต์ (ดังนั้น 1 = $ 0.001) ให้ทุกคนบนโลกนี้หนึ่งพันหนึ่งร้อยสิบสองล้านเจ็ดหมื่นห้าพันหนึ่งร้อยสี่สิบสามดอลลาร์:
Us: 7000000000L*1112075143000L = 1 894 569 218 048
อืมรอเราให้ทุกคนได้เงินหนึ่งพันล้านเหรียญ ล้นเป็นภัยพิบัติที่นี่
ดังนั้นเมื่อใดก็ตามที่คุณกำลังคำนวณจำนวนเงินที่จะโอนการใช้double
และมันจะได้รับMath.round
long
แล้วแก้ไขขึ้นยอดคงเหลือ (เพิ่มและลบทั้งสองบัญชี) long
โดยใช้
เศรษฐกิจของคุณจะไม่รั่วไหลและจะเพิ่มขึ้นเป็นสี่พันล้านดอลลาร์
มีปัญหาที่ยุ่งยากมากขึ้น - ตัวอย่างเช่นคุณจะทำอย่างไรถ้าคุณจ่ายเงินยี่สิบครั้ง? * - แต่สิ่งนี้ควรเริ่มต้น
* คุณคำนวณการชำระเงินหนึ่งรอบไปlong
; จากนั้นคูณด้วย20.0
และตรวจสอบว่าอยู่ในช่วงหรือไม่ ถ้าเป็นเช่นนั้นคุณคูณการชำระเงินด้วย20L
เพื่อรับจำนวนเงินที่หักจากยอดคงเหลือของคุณ โดยทั่วไปการทำธุรกรรมทั้งหมดจะต้องได้รับการจัดการตามlong
ดังนั้นคุณจำเป็นต้องสรุปการทำธุรกรรมของแต่ละบุคคลจริงๆ; คุณสามารถคูณเป็นทางลัด แต่คุณต้องให้แน่ใจว่าคุณไม่ได้เพิ่มข้อผิดพลาดในการปัดเศษและที่คุณไม่ล้นซึ่งหมายความว่าคุณต้องตรวจสอบกับก่อนที่จะทำการคำนวณจริงกับdouble
long