#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main() {
	double d_total = 1.2345678;
	float f_total = (float)d_total;
	double some_dbl = 6.7809123;
	
	double actual = (d_total * some_dbl);
	float no_cast = (float)(f_total * some_dbl);
	float with_cast = (float)(f_total * (float)some_dbl);
	
	cout << "actual:               " << setprecision(25) << actual << endl;
	cout << "no_cast:              " << setprecision(25) << no_cast << endl;
	cout << "with_cast:            " << setprecision(25) << with_cast << endl;
	cout << "no_cast, nextafter:   " << setprecision(25) << nextafter(no_cast, 500.0f) << endl;
	
	cout << endl;
	
	cout << "Diff no_cast:   " << setprecision(25) << actual - no_cast << endl;
	cout << "Diff with_cast: " << setprecision(25) << with_cast - actual << endl;
	return 0;
}