提问人:skalet 提问时间:2/3/2022 更新时间:2/3/2022 访问量:150
如何从 std::istream 解析浮点无穷大
How to parse floating point infinity from std::istream
问:
我为我正在处理的一个项目编写了一个超级愚蠢的序列化库。
我刚刚被浮点无穷大咬了一口,我用下面的示例程序说明了这一点。我希望程序打印,但它会打印。
如何使用和接口修复它以给出浮点无穷大(和 NaN)的正确答案?inf -> int
inf -> 0
std::ostream
std::istream
#include <limits>
#include <sstream>
#include <iostream>
void serialize(std::ostream& dst, float src) {
dst << src;
}
void deserialize(float& dst, std::istream& src) {
src >> dst;
}
int main() {
const float original = std::numeric_limits<float>::infinity();
std::stringstream buffer;
serialize(buffer, original);
float parsed;
deserialize(parsed, buffer);
std::cout << original << " -> " << parsed << '\n';
}
答: 暂无答案
评论
std::strtof
for ...”并且可以处理无穷大(而不是数字)。>>
float
std::strtof
"inf"
"nan"
num_get