草庐IT

double-quoted

全部标签

c++ - 确保 C++ double 为 64 位

在我的C++程序中,我需要从外部字节序列中提取一个64位float。有什么方法可以确保在编译时double为64位?我应该使用其他类型来存储数据吗?编辑:如果您正在阅读本文并且实际上正在寻找一种方法来确保以IEEE754格式存储,请查看以下AdamRosenfield的答案。 最佳答案 在C99中,您只需检查预处理器符号__STDC_IEC_559__是否已定义。如果是,那么您可以保证double将是一个用IEEE754(也称为IEC60559)格式表示的8字节值。请参阅C99标准,附件F。不过,我不确定此符号在C++中是否可用。#

c++ - 与 double 混合时使用 int 和 unsigned int 之间的速度差异

我有一个应用程序,其中内部循环的一部分基本上是:doublesum=0;for(inti=0;i!=N;++i,++data,++x)sum+=*data*x;如果x是一个unsignedint,那么代码所用的时间是int的3倍!这是一个更大的代码库的一部分,但我把它归结为要点:#include#include#include#includetypedefunsignedcharuint8;templatedoublemoments(constuint8*data,intN,Twrap){Tpos=0;doublesum=0.;for(inti=0;i!=N;++i,++data){s

c++ - 与 double 混合时使用 int 和 unsigned int 之间的速度差异

我有一个应用程序,其中内部循环的一部分基本上是:doublesum=0;for(inti=0;i!=N;++i,++data,++x)sum+=*data*x;如果x是一个unsignedint,那么代码所用的时间是int的3倍!这是一个更大的代码库的一部分,但我把它归结为要点:#include#include#include#includetypedefunsignedcharuint8;templatedoublemoments(constuint8*data,intN,Twrap){Tpos=0;doublesum=0.;for(inti=0;i!=N;++i,++data){s

c++ - 是否有用于指定 double 的数字后缀?

voidFoo(floata){}//1voidFoo(doublea){}//2overloadedFoo(1.0f);//callsfunction1Foo(1.0/*doublenumericsuffix?*/);//callsfunction2如果不是,那么强制转换是实现此目的的唯一方法吗?我主要感兴趣在某些操作等过程中确保double学:ulongj;doublev;j=/*somevalue*/;if(j>0UL)v=1.0/j;//if1.0issetasafloatbythecompilerthen//coulditbelikelywelosesomeprecision

c++ - 是否有用于指定 double 的数字后缀?

voidFoo(floata){}//1voidFoo(doublea){}//2overloadedFoo(1.0f);//callsfunction1Foo(1.0/*doublenumericsuffix?*/);//callsfunction2如果不是,那么强制转换是实现此目的的唯一方法吗?我主要感兴趣在某些操作等过程中确保double学:ulongj;doublev;j=/*somevalue*/;if(j>0UL)v=1.0/j;//if1.0issetasafloatbythecompilerthen//coulditbelikelywelosesomeprecision

c++ - 在 C++ 中,static_cast<double>(a) 和 double(a) 有什么区别?

两者有什么区别inta;//agetssomevaluedoublepi=static_cast(a)/3;和inta;//agetssomevaluedoublepi=double(a)/3;你见过后者吗?在我看来,我在Stroustrup编写的一些片段中看到了它,但我找不到引用。 最佳答案 可能有人认为他们是在构建而不是在类型转换。考虑:some_fun(std::string("Hello"));许多人认为他们在那里调用了构造函数,而实际上他们正在执行C风格的转换。碰巧的是,强制转换会在它查看的一长串其他东西中查看目标类型的构

c++ - 在 C++ 中,static_cast<double>(a) 和 double(a) 有什么区别?

两者有什么区别inta;//agetssomevaluedoublepi=static_cast(a)/3;和inta;//agetssomevaluedoublepi=double(a)/3;你见过后者吗?在我看来,我在Stroustrup编写的一些片段中看到了它,但我找不到引用。 最佳答案 可能有人认为他们是在构建而不是在类型转换。考虑:some_fun(std::string("Hello"));许多人认为他们在那里调用了构造函数,而实际上他们正在执行C风格的转换。碰巧的是,强制转换会在它查看的一长串其他东西中查看目标类型的构

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