What does numeric_limits<>::digits10 represent?

S

Steve

I don't get it.

In Codewarrior for Mac OS 9.4, numeric_limits<unsigned char>::digits10 == 2.

Unless I don't understand it properly (most likely!) I thought digits10 was
supposed to represent the number of digits (in base 10) a value of this type
needs. In that case, shouldn't digits10 be 3 for an unsigned char (i.e. 255
can be represented using 3 base 10 digits?), 5 for a 16-bit unsigned short,
10 for 32-bit unsigned int, etc.??

Whereas, in Codewarrior they are 2, 4 and 9 respectively.

The C++ spec (14882), section 18.2.1.2 para 9 states that its 'Number of
base 10 digits that can be represented without change'

I don't think I understand the whole sentence then, but mostly the '...
without change' bit.

Would somebody be kind enough to elaborate please.

Thanks very much.
 
J

Jesper Madsen

Steve said:
I don't get it.

In Codewarrior for Mac OS 9.4, numeric_limits<unsigned char>::digits10 == 2.

Unless I don't understand it properly (most likely!) I thought digits10 was
supposed to represent the number of digits (in base 10) a value of this type
needs. In that case, shouldn't digits10 be 3 for an unsigned char (i.e. 255
can be represented using 3 base 10 digits?), 5 for a 16-bit unsigned short,
10 for 32-bit unsigned int, etc.??
I am just guessing here, but 2 10 base digits would guarantee me 0..99,
while 3 10 base digits would guarantee me 0..999.
 
V

Victor Bazarov

Steve said:
I don't get it.

In Codewarrior for Mac OS 9.4, numeric_limits<unsigned char>::digits10 ==
2.

Unless I don't understand it properly (most likely!) I thought digits10
was
supposed to represent the number of digits (in base 10) a value of this
type
needs. In that case, shouldn't digits10 be 3 for an unsigned char (i.e.
255
can be represented using 3 base 10 digits?), 5 for a 16-bit unsigned
short,
10 for 32-bit unsigned int, etc.??

Whereas, in Codewarrior they are 2, 4 and 9 respectively.

The C++ spec (14882), section 18.2.1.2 para 9 states that its 'Number of
base 10 digits that can be represented without change'

I don't think I understand the whole sentence then, but mostly the '...
without change' bit.

If std::numeric_limits<unsigned char>::digits10 were 3, it would claim that
all numbers from 0 to 999 could be represented. That's not true. unsigned
char on your system cannot represent values above 255 without slashing the
high-order bits (or, IOW, changing the value).

V
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top