# 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_doublevalue_double =   0.001044397222448`

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

`> value_floatvalue_float =   0.0010444`

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?

NOTE:-

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.

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.001044397358782589435577392578125Quantized Value       0.001044397242367267608642578125Next 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.001044397358782589435577392578125Mid-point Value Above 0.0010443973005749285221099853515625Quantized Value       0.001044397242367267608642578125Mid-point Value Below 0.0010443971841596066951751708984375Next 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