【发布时间】:2015-08-15 09:43:31
【问题描述】:
为什么20150813.00 转换为20150812.000000 和20150708.000000 正确转换为20150708.000000?
代码示例:
#include <stdio.h>
#include <iostream>
int main()
{
double one_o = 20150813.00;
double two_o = 20150708.00;
float one = (double)one_o;
float two = (double)two_o;
std::cout << std::fixed << "one_o = " << one_o << " one = " << one << std::endl;
std::cout << "two_o = " << two_o << " two = " << two << std::endl;
return 1;
}
输出是--
one_o = 20150813.000000 one = 20150812.000000
two_o = 20150708.000000 two = 20150708.000000
帮我理解 double 到 float 类型的转换!
编辑:
std::numeric_limits<float>().max() 报告 340282346638528859811704183484516925440.000000 是存储在 float 中的最大值,这远远超出了我试图存储的范围:
【问题讨论】:
-
可能数字超过了浮点数的最大大小
-
float max = 340282346638528859811704183484516925440.000000 发现如下: std::cout ().max();仍然不明白这在另一篇文章中是如何回答的..
-
挑选您最喜欢的语言规范,并查找有关准确性的信息
-
@Amit 这将只引用IEEE-754 规范,因此我们可以避免中间步骤。
标签: c++ floating-point