Correcciones decimales

Todavía no es 100% fiable pq hay cálculos en coma flotante de javascript que no dan igual que en python, pero con esta modifiación se acerca un poco más a lo que debería dar.
This commit is contained in:
pipcat
2018-04-08 11:03:16 +02:00
committed by GitHub
parent 504d9a151b
commit cf59ba461d

View File

@@ -9,7 +9,7 @@ import urllib
import urlparse
from platformcode import logger
from decimal import Decimal, ROUND_UP
class Cloudflare:
def __init__(self, response):
@@ -65,9 +65,16 @@ class Cloudflare:
jschl_answer = self.decode2(self.js_data["value"])
for op, v in self.js_data["op"]:
jschl_answer = eval(str(jschl_answer) + op + str(self.decode2(v)))
#jschl_answer = eval(str(jschl_answer) + op + str(self.decode2(v)))
if op == '+':
jschl_answer = jschl_answer + self.decode2(v)
elif op == '-':
jschl_answer = jschl_answer - self.decode2(v)
elif op == '*':
jschl_answer = jschl_answer * self.decode2(v)
elif op == '/':
jschl_answer = jschl_answer / self.decode2(v)
jschl_answer += 0.00000000005 if jschl_answer >= 0 else -0.00000000005
self.js_data["params"]["jschl_answer"] = round(jschl_answer, 10) + len(self.domain)
response = "%s://%s%s?%s" % (
@@ -105,7 +112,8 @@ class Cloudflare:
for n in aux:
num2 += str(eval(n))
return float(num1) / float(num2)
#return float(num1) / float(num2)
return Decimal(Decimal(num1) / Decimal(num2)).quantize(Decimal('.0000000000000001'), rounding=ROUND_UP)
def decode(self, data):
t = time.time()