Why won't Single take my number?

  • Thread starter Thread starter Janie
  • Start date Start date
J

Janie

I have a field with NUMBER datatype, SINGLE field size, Fixed format and 0
Decimals. When I enter the value 100317090407 the number rewrites itself as
100317100000. When I enter 100317090417 again I get 100317100000. When I
enter 100317090499 once again I get 1003617100000.

My number is clearly under then max for a Single 3.402823E38, so what is
going on?

If I set my field size to DOUBLE, I do not encounter the same problem, but I
don't get it. Why do my numbers seem to have a mind of their own with the
SINGLE field size?
 
Single is a floating point number, with only around 7 significant digits.

Use Double, or Decimal.
 
Janie

Which version of Access?

Where are you doing this? (directly in the table, via a form, ??)

More info, please...

Regards

Jeff Boyce
Microsoft Access MVP

--
Disclaimer: This author may have received products and services mentioned
in this post. Mention and/or description of a product or service herein
does not constitute endorsement thereof.

Any code or pseudocode included in this post is offered "as is", with no
guarantee as to suitability.

You can thank the FTC of the USA for making this disclaimer
possible/necessary.
 
Hmmm ... when reading the description of Single it sounds w-a-y different!
Up to seven decimal places and a maximum value of 3.402823 ^ 38

I get it ... I had already decided to go with Double .. but I wanted to
understand the why of the behavior.

So, bottom line is even though the maximum value is significantly higher, if
I want something grater than a 7 digit number, stay away friom Single.

Thanks for the enlightenment!
 
If I set my field size to DOUBLE, I do not encounter the same problem, but I
don't get it. Why do my numbers seem to have a mind of their own with the
SINGLE field size?

The Single datatype does indeed have a range to 10^38 or so... but it only has
24 bits of precision, equivalent to about 7 digits.

If these values are some sort of identifier, i.e. a part number or the like,
and you're not going to be doing any math calculations with them, you would be
much better off storing them in a Text field (with an input mask to force all
digits if that's what you want). This is doubly the case if you want leading
zeroes.
 
Or, to put it structurally, there are two lmitations:

1. Numerical size of the number

2. # of digits of precision.

What you were trying to do complied with #1 but violated #2.
 
Back
Top