Python 如何将Bailey-Borwein-Plouffe算法从十六进制转换为十进制?

Python 如何将Bailey-Borwein-Plouffe算法从十六进制转换为十进制?,python,hex,string-formatting,pi,Python,Hex,String Formatting,Pi,有人能解释一下这个返回语句在做什么吗?多谢各位 这不会转换为十进制。如果有的话,它会将十进制值转换为十六进制字符串 这是,通常用于输出。格式规范在左侧,在%分隔符之前;值在右边 值:x*16**14为x,左移14个十六进制数字 格式:%…x指定无符号十六进制。 014指定至少14列,零填充 结果字符串返回给调用程序 要转换为十进制,您需要 修正你发布的代码。这仍然有语法错误 将基座特定代码从十六进制改为十二进制。首先将电源基座从16改为10 如果你被卡住了,你可以发布你的编码问题。在这种情况下

有人能解释一下这个返回语句在做什么吗?多谢各位

这不会转换为十进制。如果有的话,它会将十进制值转换为十六进制字符串

这是,通常用于输出。格式规范在左侧,在
%
分隔符之前;值在右边

值:
x*16**14
x
,左移14个十六进制数字

格式:
%…x
指定无符号十六进制。
014
指定至少14列,零填充

结果字符串返回给调用程序


要转换为十进制,您需要

  • 修正你发布的代码。这仍然有语法错误
  • 将基座特定代码从十六进制改为十二进制。首先将电源基座从
    16
    改为
    10
  • 如果你被卡住了,你可以发布你的编码问题。在这种情况下,请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效帮助您。
    我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题

    def S(j, n):
        k = 0
        s = 0
        left_sum = 0
        while (k <= n):
            denominator = 8k + j
            numerator = pow(16, n-k, denominator)
            left_sum = (left_sum + (numerator / denominator)) % 1.0
            k += 1
        right_sum = 0
        k = n + 1
        newt = 0
        while 1:
            numerator = pow(16, n-k)
            denominator = 8k + j
            check = numerator / denominator
            right_sum = newt + check
            if right_sum == check:
                break
            else:
                newt = right_sum
            k += 1
    
        result = left_sum + (right_sum % 1.0)
        return result
    
    
    def pi(n):
        n -= 1
        x = (4*S(1, n) - 2*S(4, n) - S(5, n) - S(6, n)) % 1.0
    
    return "%014x" % int(x * 16**14)