#include <iostream>

#include <boost/multiprecision/cpp_dec_float.hpp>

using namespace boost::multiprecision;

int main() {
    long double a = 0.1;
    std::cout << std::setprecision(100) << a << std::endl;

    cpp_dec_float_100 b("0.1");
    std::cout << std::setprecision(100) << b << std::endl;

    cpp_dec_float_100 counter;
    do {
        std::cout << "Loop " << std::endl;
        counter += cpp_dec_float_100("0.1");
    } while (counter != 1.0);


    float amountOfProduct = 254.99f;
    unsigned long int quantity = 100000000;
    float amountOfCheckout = amountOfProduct*quantity;

    std::cout << std::setprecision(30) << amountOfCheckout << std::endl;

    cpp_dec_float_50 amountOfProduct2 = cpp_dec_float_50("254.99");
    cpp_dec_float_50 quantity2 = cpp_dec_float_50("100000000");
    cpp_dec_float_50 amountOfCheckout2 = cpp_dec_float_50(amountOfProduct2*quantity2);

    std::cout << std::setprecision(30) << amountOfCheckout2 << std::endl;

    return 0;
}