Reserved IP Address°C
04-02-2025
BSV
$31.63
Vol 22.76m
-2.27%
BTC
$84294
Vol 27424.52m
1.4%
BCH
$303.48
Vol 142.79m
-1.58%
LTC
$81.93
Vol 331.27m
-2.9%
DOGE
$0.16
Vol 1229.21m
-0.57%
Getting your Trinity Audio player ready...

This post originally appeared on Medium, and we republished with permission from Xiaohui Liu.

sCrypt does not support floating point natively, mainly due to the high overhead of implementing it (such as IEEE Floating Point Standard) using integral arithmetic in Bitcoin Script. However, there are many use cases where fractional numbers are indispensable. We provide two libraries to support such cases.

Fixed Point Arithmetic

One simple way to represent a fractional number is storing a fixed number of digits of their fractional part, by scaling it with a fixed factor. For example, when you divide integer 1 by integer 2 in sCrypt, normally you get zero:

1 / 2 = 0

By scaling them both by 10 using fixed point, you get 5, which is 0.5 as expected:

10 * 10 / 20 = 5

The following library supports fixed point numbers.

FixedPoint Library
FixedPoint Library

Thanks to Bitcoin Virtual Machine’s native support of bigint of arbitrary length, it is extremely straightforward to implement fixed point of arbitrary precision. There is no overflow or underflow. Here is an example of using it.

Floating Point Arithmetic

In cases where high precision needs to be maintained throughout many consecutive steps of calculation, the following floating point library is preferred. It achieves accuracy at the cost of performance. A number is stored as n / d.

Floating Point Library
Floating Point Library

An example of using it can be found here.

Recommended for you

Developers in Japan can now get hands-on with BSV’s Python SDK
BSV Blockchain Ambassador and YenPoint CEO Ken Sato is co-presenting a session on BSV's Python SDK at Tohoku University on...
March 20, 2025
Babbage set to release new software stack for BSV Hackathon
Blockchain app building just gets more exciting as Babbage announces the upcoming release of its updated Web3 toolbox for the...
March 18, 2025
Advertisement
Advertisement
Advertisement