解释为什么 C++ 和 C# 对双精度类型具有不同的最大值?
Explanation of why C++ and C# have a different maximum value for type double?
在 C# 中,双精度类型的最大值为:1.79769313486232E+308。
但是,在 C++ 中,双精度类型的最大值为:1.79769e+308。
这意味着C++程序(使用 strtod 函数)不能总是解析由 C# 输出的双精度类型值。
对这种行为有什么解释和处理这个问题的好解决方案吗?
从 C++/C# 与浮点数和双精度数的差异
C++允许程序保留更高的精度用于临时 结果比子表达式的类型所暗示的要好。一件事 可能发生的是中间表达式(或未指定的 它们的子集)计算为扩展的 80 位浮点数。
更多信息浮点计算中的精度和准确度
引用 埃里克·利珀特
的话C# 规范的第 4.1.6 节,以浮点开头 可以以比结果类型更高的精度执行操作 的操作。例如,某些硬件体系结构支持 "扩展"或"长双"浮点类型,范围更大,并且 精度比双精度型,并隐式执行所有 使用此更高精度类型的浮点运算。。。。**看 规范以获取更多详细信息。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 如何计算浮点数据类型的范围、最大值、最小值
- 从模板继承<类型名 T、T 最大值、T 最小值>具有多个类型名模板参数的结构
- 解释为什么 C++ 和 C# 对双精度类型具有不同的最大值?
- 类型 *阵列的最小或最大值的类功能 *
- 如何从地图中的所有值类型中找到最大值
- 使指针类型围绕其最大值
- C++11 中任意类型 T 的最小值/最大值
- 有符号整数类型的最大值
- C++ 模板类/类型,可在最大值和最小值之间进行选择
- 自动标准最大输入的类型扣除失败 = 标准::最大值<int>;
- 如何找到未知整数类型的最大值
- 将大于long类型的最大值的值传递给C中的fseek
- 在编译时根据可能的最大值确定索引类型
- 如何在运行时计算数据类型滚转之前允许的最大值
- 有符号整数类型的最小值和最大值之间关系的C++标准保证是什么
- C/C++ 中整数类型的最大值。为什么在这个例子中我不能正确计算它?