Alcino Albuquerque commented on merge request !12 at Concensum / concensum-core

Alcino Albuquerque
2019-08-01T11:28:37Z

O nosso reward tem um valor fractional então normalmente não temos usamos floats para contas com dinheiro por causa do problema das aproximações com a virgula flutuante. Aqui o valor do vout acaba por estar certo porque o cast para int esta a cortar a parte decimal e por si não afeta o test, por isso é mais um heads up.

O INITIAL_BLOCK_REWARD é um Decimal, um modulo do python para decimal floating points operations que já tem este problema em conta, tipo o BigDecimal do Java. Por exemplo o resultado do float(INITIAL_BLOCK_REWARD)-0.01 é 24577.164200000003 em vez do esperado 24577.1642

Nós temos usado o contrario, neste tipo de contas em vez de passar o INITIAL_BLOCK_REWARD para float passamos o 0.01 para Decimal("0.01")