What is the real value of “single(my_variable)”?

My script reads a string value “0.001044397222448” from a file, and after parisng the file this value ends up as double precission:

> format long
> value_double
value_double =

After I convert this number to singe using value_float = single(value_double), the value is:

> value_float
value_float =

What is the real value of this variable, that I later use in my Simulink simulation? Is it really truncated/rounded to 0.0010444?

My problem is that later on, after I compare this with analogous C code, I get differences.

In the C code the value is read as float gf = 0.001044397222448f; and it prints out as `0.001044397242367267608642578125000`. So the C code keeps good precission. But, does Matlab?


Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

Expert Answer

Prashant Kumar answered . 2021–10–22 06:33:19

Decimal text rounds to nearest representable value

When decimal text is read in and parsed by MATLAB, a C compiler, your own custom tool, etc., it will (or should) get mapped to the nearest representable value of the type it will be assigned to.

For the data type single, here are three neighboring representable values, shown exactly

Next Rep. Value Above 0.001044397358782589435577392578125
Quantized Value 0.001044397242367267608642578125
Next Rep. Value Below 0.001044397125951945781707763671875

Let’s also show the ideal mid-points between these three values. (Note, the midpoints are NOT representable in the type.)

Next Rep. Value Above 0.001044397358782589435577392578125
Mid-point Value Above 0.0010443973005749285221099853515625
Quantized Value 0.001044397242367267608642578125
Mid-point Value Below 0.0010443971841596066951751708984375
Next Rep. Value Below 0.001044397125951945781707763671875

Given these values, we can say if the decimal text’s value, as interpreted in the world of ideal math, is within this range


Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.