草庐IT

double_bits

全部标签

c++ - 在 int 和 double 之间转换有多贵?

我经常看到将整数转换为double整数再转换为double整数的代码(有时是有充分理由的,有时不是),我突然想到这似乎是我程序中的“隐藏”成本。我们假设转换方法是截断。那么,它到底有多贵?我确信它会因硬件而异,所以让我们假设一个新的英特尔处理器(Haswell,如果你愿意,尽管我会接受任何东西)。我会感兴趣的一些指标(尽管一个好的答案不需要全部):生成的指令数使用的周期数与基本算术运算相比的相对成本我还假设,考虑到我们每秒可以执行的计算量相对于数据量的差异,我们最能感受到转换速度慢的影响的方式是功耗而不是执行速度实际上可以每秒到达CPU。 最佳答案

c++ - 在 int 和 double 之间转换有多贵?

我经常看到将整数转换为double整数再转换为double整数的代码(有时是有充分理由的,有时不是),我突然想到这似乎是我程序中的“隐藏”成本。我们假设转换方法是截断。那么,它到底有多贵?我确信它会因硬件而异,所以让我们假设一个新的英特尔处理器(Haswell,如果你愿意,尽管我会接受任何东西)。我会感兴趣的一些指标(尽管一个好的答案不需要全部):生成的指令数使用的周期数与基本算术运算相比的相对成本我还假设,考虑到我们每秒可以执行的计算量相对于数据量的差异,我们最能感受到转换速度慢的影响的方式是功耗而不是执行速度实际上可以每秒到达CPU。 最佳答案

c++ - `long double` 的格式说明符是什么

我正在开发适用于各种Unix和Windows32位和64位操作系统的应用程序。我使用longdouble数据类型,当我使用sprintf()并使用longdouble和%lf然后它在windows下工作正常不会给出任何类型的错误,但是在Solaris平台上它会给出核心转储。相同问题的示例代码如下。voidmain(){stringsize="16622";stringsizeFact="20";longlongsizeLongLong=strtoll(size);intfactInt=atoi(sizeFact);longdoublesizeLongDouble=(longdouble

c++ - `long double` 的格式说明符是什么

我正在开发适用于各种Unix和Windows32位和64位操作系统的应用程序。我使用longdouble数据类型,当我使用sprintf()并使用longdouble和%lf然后它在windows下工作正常不会给出任何类型的错误,但是在Solaris平台上它会给出核心转储。相同问题的示例代码如下。voidmain(){stringsize="16622";stringsizeFact="20";longlongsizeLongLong=strtoll(size);intfactInt=atoi(sizeFact);longdoublesizeLongDouble=(longdouble

c++ - 为什么这个 double 值打印为 "-0"?

doublea=0;doubleb=-42;doubleresult=a*b;couta*b的结果是-0,但我期望0。我哪里做错了? 最佳答案 -0.0和0.0的位表示不同,但值相同,所以-0.0==0.0会返回true。在您的情况下,result是-0.0,因为其中一个操作数是负数。看这个演示:#include#includevoidprint_bytes(charconst*name,doubled){unsignedchar*pd=reinterpret_cast(&d);std::cout";for(inti=0;i""输出

c++ - 为什么这个 double 值打印为 "-0"?

doublea=0;doubleb=-42;doubleresult=a*b;couta*b的结果是-0,但我期望0。我哪里做错了? 最佳答案 -0.0和0.0的位表示不同,但值相同,所以-0.0==0.0会返回true。在您的情况下,result是-0.0,因为其中一个操作数是负数。看这个演示:#include#includevoidprint_bytes(charconst*name,doubled){unsignedchar*pd=reinterpret_cast(&d);std::cout";for(inti=0;i""输出

c++ - C 和 C++ 中 float 和 double 的大小是多少?

这个问题在这里已经有了答案:Fixed-sizefloatingpointtypes(4个回答)关闭8年前.我想看看是否有任何类似于uint32_t的标准类型,它总是会映射到32位无符号整数类型,但我找不到。float的大小在所有平台上都是4字节吗?double的大小总是8吗?这两个标准对此事有任何说明吗?我想确保我的大小在所有平台(x86和x64)上始终相同,因此我使用标准int类型,但我找不到float和双。 最佳答案 摘自C99标准,规范性附件F(C++标准没有明确提及此附件,尽管它包括所有受影响的功能,每个引用都没有更改。此

c++ - C 和 C++ 中 float 和 double 的大小是多少?

这个问题在这里已经有了答案:Fixed-sizefloatingpointtypes(4个回答)关闭8年前.我想看看是否有任何类似于uint32_t的标准类型,它总是会映射到32位无符号整数类型,但我找不到。float的大小在所有平台上都是4字节吗?double的大小总是8吗?这两个标准对此事有任何说明吗?我想确保我的大小在所有平台(x86和x64)上始终相同,因此我使用标准int类型,但我找不到float和双。 最佳答案 摘自C99标准,规范性附件F(C++标准没有明确提及此附件,尽管它包括所有受影响的功能,每个引用都没有更改。此

c++ - C++中long double的精度是多少?

有人知道如何在特定平台上找出longdouble的精度吗?我似乎在17位十进制数字后失去了精度,这与我仅使用double时相同。我希望得到更多,因为double在我的平台上用8个字节表示,而longdouble是12个字节。在您问之前,这是针对欧拉计划的,所以是的,我确实需要超过17位数字。:)编辑:感谢您的快速回复。我刚刚确认在我的系统上使用longdouble只能得到18位十进制数字。 最佳答案 您可以通过std::numeric_limits:找到#include//std::cout#include//std::numeri

c++ - C++中long double的精度是多少?

有人知道如何在特定平台上找出longdouble的精度吗?我似乎在17位十进制数字后失去了精度,这与我仅使用double时相同。我希望得到更多,因为double在我的平台上用8个字节表示,而longdouble是12个字节。在您问之前,这是针对欧拉计划的,所以是的,我确实需要超过17位数字。:)编辑:感谢您的快速回复。我刚刚确认在我的系统上使用longdouble只能得到18位十进制数字。 最佳答案 您可以通过std::numeric_limits:找到#include//std::cout#include//std::numeri