我正在编写一些简单的代码以将基本值提高到幂 然后对输出执行一些操作。
我已经在下面包含了我现在正在使用的代码(请参阅此消息的结尾),还可以在下面立即看到当我从控制台运行脚本时的样子:
.........................................
C:\PYTHON34>python tst.py
INPUT Value: 431.1
INPUT Power Value; 1.9907
RESULT 1739.554505641426658257842063903808593750000000000000000000000000
.........................................
这是我当前正在使用的代码:
import time
e0=time.time()
c0=time.clock()
import sys
import math
from sympy import mpmath
from mpmath import *
mpmath.mp.dps = 10000
inputx = float(input('Enter inputx Value: '))
powerx =float(input('Enter Power Value; '))
inputx_squared = float((mpmath.power(inputx, powerx)))%1999
print('\r')
print('RESULT ', '%.60f' % inputx_squared)
elapsed_time=time.time() -e0
cpu_time=time.clock() -c0
print('\r')
print("CPU TIME ;", cpu_time)
我需要做的事;
1。)将小数点左边的整数值(不带小数)存储到变量= x
2。)抓住小数点右边的整个十进制值并存储在变量= y
根据一些简单规则解析(y)。这就是我的把戏。
我想做的是检查(y),看看是否有任何前导零和后导零
在示例中; “ 1739.554505 .....”如果替换为该值,则类似于以下任何内容;
1739.0554505
1739.00554505
1739.000554505
然后我要提取整数减去任何连续的前导零
下一步,我要削减数字,以便当有四个连续的尾零时,所有零都从第一个开始,前一个从前四个连续零开始,而所有后续零都是 截短
所以在我们的例子中; “ 1739.554505641426658257842063903808593750000000000000000000000000000000”
(y)变为“ 55450564142665825784206390380859375”
接下来,我想在%1999之前获得上述值的mod
这将返回“ 1407”
接下来,我想将此值作为右边的小数点作为;
1739.1407
答案 0 :(得分:1)
我同意第一个评论,并建议使用字符串。
Result = 1739.554505641426658257842063903808593750000000000000000000000000
z = str(Result).split(".")
x = z[0]
y = z[1].strip("0")
mode = int(y)%1999
new_res = float(x+"."+str(mode))
print(new_res)
>>>1739.1407
strip()方法删除所有前导零和尾随零。 我也对此类操作的应用感兴趣。
答案 1 :(得分:0)
您是否考虑过使用Decimal
类型:
import math
from decimal import Decimal, getcontext
getcontext().prec = 60
inputx = Decimal('431.1')
powerx = Decimal('1.9907')
inputx_squared = (inputx ** powerx) % 1999
x = math.floor(inputx_squared)
y = inputx_squared - x
给你
In: x
Out: 1739
In: y
Out: Decimal('0.554505641528269687606334953784096474037969748439285550')