Post
Topic
Board Альтернативные криптовалюты
Re: NovaCoin (scrypt PoW + PoS hybrid) [self-mod]
by
fsb4000
on 12/10/2014, 19:44:15 UTC
Почему в  create=1.00154685 есть 2 нуля после запятой
Наобум выскажу предположение. В логе используется какой-нить форматный С print, доставшийся в наследство ещё с BTC. Там было 8 чисел после запятой, а у NVC всего 6, отседова и два 0.
Поискал в исходниках, вот что нашёл
Code:
printf("GetProofOfStakeReward(): create=%s nCoinAge=%"PRI64d" nBits=%d\n", FormatMoney(nSubsidy).c_str(), nCoinAge, nBits);
Code:
string FormatMoney(int64 n, bool fPlus)
{
// Note: not using straight sprintf here because we do NOT want
// localized number formatting.
int64 n_abs = (n > 0 ? n : -n);
int64 quotient = n_abs/COIN;
int64 remainder = n_abs%COIN;
string str = strprintf("%"PRI64d".%08"PRI64d, quotient, remainder);
// Right-trim excess zeros before the decimal point:
int nTrim = 0;
for (int i = str.size()-1; (str[i] == '0' && isdigit(str[i-2])); --i)
++nTrim;
if (nTrim)
str.erase(str.size()-nTrim, nTrim);
if (n < 0)
str.insert((unsigned int)0, 1, '-');
else if (fPlus && n > 0)
str.insert((unsigned int)0, 1, '+');
return str;
}
Code:
nSubsidy = nCoinAge * nRewardCoinYear * 33 / (365 * 33 + 8);
Code:
nSubsidy = min(nSubsidy, nSubsidyLimit);

Видимо gades, Sibiryak и я нашли баг Smiley
и вместо
Code:
string str = strprintf("%"PRI64d".%08"PRI64d, quotient, remainder);
нужно
Code:
string str = strprintf("%"PRI64d".%06"PRI64d, quotient, remainder);