【问题标题】:Converting a float (real number) to any other base将浮点数(实数)转换为任何其他基数
【发布时间】:2022-01-06 12:47:27
【问题描述】:

我正在尝试创建一个程序,它以浮点数 9.325 为基数 10,然后将其转换为任何指定的基数(二进制、十六进制、三进制、八进制等)。目前,我有一种非常低效的方法,因为我不确定一种通用算法可以将实数基数 10 转换为另一个基数,因为目前我正在使用与基数 8 不同的算法进行基数 2 转换。

代码(python 但语言不一定重要):

def main():

    number = 9.325
    base = float(input("Enter base: "))
    
    if base == 2:
        # implement base 10 -> base 2 conversion algorithm
    else if base > 2:
        # implement base 10 -> base greater than 2 conversion algorithm

main()

我想知道是否有一种确定的算法可以采用数字 9.325,然后将其转换为任何其他基数,无论是基数 2 还是基数 16,以消除对长链 if 语句的需要。让我感到困难的是这个数字是浮动的,如果它是一个整数,那没问题。但是,我能找到将浮点数转换为任何其他基数的唯一方法是使用大量不同的算法,任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 是的,有一种通用算法可以将一个基数中的任何数字转换为另一个基数中的数字。

标签: python base


【解决方案1】:

是的,有一种通用算法可以将一个基数中的任何数字转换为另一个基数中的数字。首先,您分别转换整数和小数部分。听起来您熟悉通过重复除以基数将整数从一个基数转换为另一个基数的算法。您仍然需要使用十进制数的整数部分来执行此操作。对于数字的小数部分,算法类似,但您重复乘以基数而不是除数。

【讨论】:

  • 感谢您的快速回复。我怎么知道何时停止乘以小数部分?
  • @pythonoob 转换整数部分时如何知道何时停止除法?这可以给你一些线索来回答你的问题。另一种要比较的算法是将分数转换为小数。你怎么知道这个算法什么时候停止划分?
  • @pythonoob 看来您理解我的提示并想通了。附带说明一下,“终止”小数(正如大多数数学老师所说)只是“重复小数”的一种特殊情况,因为“终止”意味着我们达到 0,但继续除以 0 仍然会导致永远为 0。
  • 谢谢你,帮了大忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2012-03-01
相关资源
最近更新 更多