
Hi Peter, Peter wrote:
I'm wondering how to use the numeric_conversion library to perform rounding based on types.
Assume I have a double value of 3.7. If I convert it to integer, the result should be 4. If I convert it to float, the result should be 3.7. The types I want to convert from and to are both specified in a template, i.e. they form an open set of types.
From reading the numeric_conversion docs I tend to think that the library can do what I want, but I'm unable to find out how.
Can anybody help?
the default behaviour of numeric_cast seems to be to truncate so 3.7 will be casted to 3. I asked nearly the same question some time ago and got a useful answer from Fernanco Cacciola. Look at his post from 23.04.08 (don't know how to link it here) Maybe I should just paste it, so here it comes:
numeric_cast<> uses the default policies, but you an easily create you own version with any other policy, like the one which rounds floats to the nearest integer: RoundEven<>
#include
template
inline Target my_numeric_cast ( Source arg ) { typedef boost::numeric::conversion_traits Traits ; typedef boost::numeric::converter
Converter ;
return Converter::convert(arg); }
HTH
-- Fernando Cacciola
Regards, Rainer