16 m_readDigits(realPrecisionDigits), m_bitsMask(0) {
17 if (realPrecisionDigits > 17) {
18 throw "Invalid value. Supported realDigits is upto 17. Ex 15.17";
20 for (uint32_t i = 0; i < realPrecisionDigits; i++) {
21 m_bitsMask = (m_bitsMask << 1) | 0x1;
29 uint32_t decimalVal = realNumber;
30 uint32_t integerVal = realNumber;
31 realNumber = realNumber - integerVal;
32 for (int16_t i = 0; i < m_readDigits; i++) {
34 integerVal = realNumber;
35 if (integerVal == 1) {
36 realNumber = realNumber - integerVal;
37 decimalVal = (decimalVal << 1) + 1;
39 decimalVal = decimalVal << 1;
46 double decimalVal = 0;
47 uint16_t fractionValue = 0;
48 decimalVal = hexNumber >> m_readDigits;
49 fractionValue = hexNumber & m_bitsMask;
52 for (
int i = (m_readDigits-1); i >= 0; i--) {
53 temp += (fractionValue >> i & 0x1) / twos;
56 return (decimalVal + temp);