我正在编写一些单元测试,用于使用C ++的std :: stod()函数将字符串转换为双精度数。但是,我无法找到转换抛出std :: out_of_range异常的最小/最大限制。我一直在网上搜索。
要转换的字符串仅由数字组成,恰好是一个句点,前面可选为减号。没有指数,NAN等。示例:999.1278,-999.1277
我正在寻找以下信息:
- 可以转换的最大双值ok,其中句点的右侧为0.示例:999876.0
- 最小数字传递最大数字(如上面的#1中所示),这会导致抛出std :: out_of_range异常。示例:99987603.0
- 可以转换的最小双值ok,其中句点的左侧为0.示例:0.999876
- 最小数字传递最小数字(如上面的#3中所示),这会导致抛出std :: out_of_range异常。示例:-0.99987603
- 如果可能,其他已知限制。例如,随着期间左/右侧的值增长和缩小,新的最小/最大值是多少?
醇>
我不知道这是多么可行,特别是#5,因为双打的浮点性质。
作为参考,我能够很容易地用整数做到这一点。这些是int64_t转换的字符串:
- 9223372036854775807
- 9223372036854775808
- -9223372036854775808
- -9223372036854775809
醇>