Rozpětí cen produktů v BTC při fluktuacích kurzu

Inspirován řešením od Clarka Moodyho přikládám zdrojový kód v PHP využitelný jak pro eshopy tak pro nacenění digitálních služeb.

Jde o to, že se cena mění v určitých rozsazích a nemění se při každé drobné změně kurzu. Parametry si můžete navolit nakolik bude cena “zaokrouhlena” anebo naopak bude sledovat přesně vývoj kurzu.

Původní článek: https://rtbtc.com/support/platform/pricing/

$p = 1.5; // base price for the service, p, denominated in CZK
$b = 0.2;
$f = ($p + $b) / ($p - $b);
echo "Faktor $f<br /><br />";

for ($r = 100; $r<= 4000; $r = $r+100) {
  $c = 0.001; // cost of service in btc
  
  while (($c * $r) < ($p - $b)) 
    $c = $c * $f;
  while (($c * $r) > ($p + $b)) 
    $c = $c / $f;
  
  echo "kurz: $r - cena: $c (rounded ".smart_round($c).")<br />";
}

function smart_round($number, $digits = 8) { // round numbers to nice one but losing max 0.1% 
  $roundednumber = $number;
  while ($digits > 0) {
   $new = round($number, $digits);
   if (abs(($new - $number) / $number) > 0.001) {
     return $roundednumber;
   }
   $digits--;
   $roundednumber = $new;
  }
  return $roundednumber;
}