กำหนดค่า float ทศนิยมและจำนวนตำแหน่งทศนิยม งานของเราคือแปลงเป็นรูปแบบฐานแปด (Octal)
ขั้นตอนแรก: นำส่วนจำนวนเต็มจากค่าทศนิยมมาแปลงเป็นฐานแปด
ขั้นตอนที่สอง: นำส่วนทศนิยมมาแปลงเป็นฐานแปด
ขั้นตอนที่สาม: รวมทั้งสองส่วนเข้าด้วยกัน
รายละเอียดขั้นตอน
ส่วนจำนวนเต็ม: หารตัวเลขด้วย 8 ซ้ำๆ และบันทึกเศษ จนกว่าผลหารจะน้อยกว่า 8 แล้วนำเศษทั้งหมดมารวมกัน (อ่านจากล่างขึ้นบน)
ส่วนทศนิยม: คูณส่วนทศนิยมด้วย 8 ซ้ำๆ จนกว่าส่วนทศนิยมจะเป็น 0 ทุกครั้งที่คูณ ให้บันทึกส่วนจำนวนเต็มของผลคูณ แล้วนำส่วนทศนิยมของค่าใหม่มาคูณ 8 อีกครั้ง ทำซ้ำจนครบจำนวนตำแหน่งที่ต้องการ
โค้ดตัวอย่าง
def float_convert_octal(my_number, places=3):
my_whole, my_dec = str(my_number).split(".")
my_whole = int(my_whole)
my_dec = int(my_dec)
res = oct(my_whole).lstrip("0o") + "."
for x in range(places):
my_whole, my_dec = str((decimal_converter(my_dec)) * 8).split(".")
my_dec = int(my_dec)
res += my_whole
return res
def decimal_converter(num):
while num > 1:
num /= 10
return num
# Driver Code
n = input("Enter the floating point value: \n")
p = int(input("Enter the number of decimal places of the result: \n"))
print(float_convert_octal(n, places=p))
ผลลัพธ์
Enter the floating point value: 6.89
Enter the number of decimal places of the result: 12
6.707534121727
หมายเหตุ: ฟังก์ชัน decimal_converter ทำงานโดยการหาร 10 ซ้ำจนค่าน้อยกว่า 1 เพื่อแปลงตัวเลข เช่น 89 -> 0.89 ก่อนคูณ 8