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
我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题
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)