ทศนิยมแบบไบนารีใด ๆ สามารถจัดรูปแบบเป็นทศนิยม สตริงผลลัพธ์อาจค่อนข้างยาว แต่เป็นไปได้ ในบทความของฉันเกี่ยวกับจุดลอยฉันครอบคลุมความสำคัญของความแม่นยำและตอนนี้ฉันต้องการฟังก์ชั่นนี้ ความท้าทายนี้คือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ค่าทศนิยมเป็นอินพุตและจัดรูปแบบสตริงทศนิยมที่แน่นอนเป็นเอาต์พุต
เพื่อให้แน่ใจว่าเรากำลังทำงานกับตัวเลขทศนิยมที่ถูกต้องจะต้องจัดรูปแบบที่แม่นยำเป็นข้อมูลป้อนเข้าสู่โปรแกรม รูปแบบนี้จะเป็นจำนวนเต็มสองจำนวนที่เกิดขึ้นจริงค่าจุดลอยSignificand Exponent
Significand * 2 ^ Exponent
โปรดทราบว่าค่าใดค่าหนึ่งอาจเป็นลบได้
ข้อมูลจำเพาะ:
- ต้องรองรับช่วงและความแม่นยำอย่างน้อย 32 บิต (ไม่มีการป้อนข้อมูลเกินกว่านั้น)
- ค่าที่จัดรูปแบบทศนิยมต้องเป็นรูปแบบที่แน่นอน (ใกล้มากพอที่จะรับประกันได้ว่าการปัดเศษกลับปลายที่ถูกต้องนั้นไม่ดีพอ)
- เราไม่เชื่อถือฟังก์ชั่นการจัดรูปแบบจุดลอยตัวของไลบรารีมาตรฐานที่จะถูกต้องเพียงพอหรือเร็วพอ (เช่น:)
printf
ดังนั้นจึงอาจไม่สามารถใช้งานได้ คุณต้องทำการฟอร์แมต อนุญาตให้ใช้ฟังก์ชั่นการจัดรูปแบบ / การแปลงแบบอินทิกรัล - อาจไม่มีศูนย์นำหน้าหรือต่อท้ายยกเว้นศูนย์ที่นำหน้าศูนย์ที่จำเป็น
.
หากไม่มีส่วนประกอบจำนวนเต็ม - อนุญาตให้ใช้ฟังก์ชันหรือโปรแกรมทั้งหมด
ตัวอย่าง:
1 -2 => 0.25
17 -3 => 2.125
-123 11 => -251904
17 50 => 19140298416324608
23 -13 => 0.0028076171875
3 120 => 3987683987354747618711421180841033728
3 -50 => 0.00000000000000266453525910037569701671600341796875
-3 -50 => -0.00000000000000266453525910037569701671600341796875
10 -2 => 2.5
-12345 -3 => -1543.125
0 0 => 0
161 -4 => 10.0625
512 -3 => 64
รหัสที่สั้นที่สุดชนะ
.0
หรือไม่
0.abc
ไม่ใช่ศูนย์นำหน้าแสดงว่าabc.0
ไม่ใช่ศูนย์ต่อท้าย
.0
จำนวนเต็มทุกครั้งเมื่อจัดการกับจำนวนจุดลอยตัว ดูตัวอย่างหลาม: เมื่อเทียบกับstr(1.0) == '1.0'
str(1) == '1'
ตรรกะของคุณยังคงไม่สอดคล้องกัน