如何找到双倍数字?

SuT*_*ron -6 c++ floating-point double

假设我有一个输入1.251564.

如何找到"."输出后有多少元素,如下所示:

int  numFloating;

// code to go here that leads to
// numFloating == 6
Run Code Online (Sandbox Code Playgroud)

ps很抱歉没有提供任何代码,我只是不知道应该如何实现:(

谢谢你的回答!

Dav*_*nan 5

让我们考虑你的号码1.251564.将其存储在a中时double,它以二进制IEEE754格式存储.你可能会发现这个数字不具代表性.那么,让我们检查这个数字.在最近表示的双是:

1.25156 39999 99999 89880 45035 73046 53152 82344 81811 52343 75
Run Code Online (Sandbox Code Playgroud)

这可能会给你带来惊喜.小数点后面有52位小数.

您需要从中汲取的教训是,如果您想询问有关十进制表示的问题,则需要使用十进制数据类型而不是double.一旦您能够准确地表示价值,那么您将能够以符合您期望的方式对其进行推理.