By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,804 Members | 1,631 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,804 IT Pros & Developers. It's quick & easy.

What does numeric_limits<>::digits10 represent?

P: n/a
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.

--
Regards,
Steve.

Jul 23 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a

"Steve" <ro**@127.0.0.1> wrote in message
news:BE343B2E.C4B1D%ro**@127.0.0.1...
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.
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.

--
Regards,
Steve.

Jul 23 '05 #2

P: n/a
"Steve" <ro**@127.0.0.1> wrote...
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
Jul 23 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.