草庐IT

double-byte

全部标签

c++ - 预处理器 "invalid integer constant expression"比较 int 和 double

在我的代码中的某处,我有预处理器定义#defineZOOM_FACTOR1我在另一个地方#ifdefZOOM_FACTOR#if(ZOOM_FACTOR==1)#defineFONT_SIZE8#else#defineFONT_SIZE12#endif#else#defineFONT_SIZE8#endif问题是当我将ZOOM_FACTOR值更改为float值时,例如1.5,出现编译错误C1017:无效的整数常量表达式。有谁知道我为什么会收到这个错误,有没有办法在预处理器指令中比较integer和floatingpointnumber? 最佳答案

c++ - 将 double 组转换为仅具有 double 成员的结构数组而不复制数据

我正在使用第三方C++库在Julia中完成一些繁重的工作。在Julia方面,数据存储在Array{Float64,2}类型的对象中(这大致类似于double的二维数组)。我可以使用指向double的指针将它传递给C++。然而,在C++端,数据存储在名为vector3的结构中:typedefstruct_vector3{doublex,y,z;}vector3;我的快速而肮脏的方法是一个五步过程:在C++端动态分配结构数组将输入数据从double*复制到vector3*做繁重的工作将输出数据从vector3*复制到double*删除动态分配的数组复制大量数据是非常低效的。我可以使用一些神

c++ - 求以 10 为底的 double 的指数和尾数

我需要将double类型的数值分解为:指数和尾数。我发现我可以使用math.h中的frexp()函数来做到这一点。但是,此函数假定基数为2。有什么方法可以让我找到以10为底的指数和尾数——这样返回的尾数和指数都是整数类型。#include#includeintmain(){inte;constdoublex=1024;constdoublefraction=frexp(x,&e);std::printf("x=%.2lf=%.2lf*2^%d\n",x,fraction,e);}我的编译器是:gcc(Ubuntu/Linaro4.6.4-6ubuntu2)4.6.4

c++ - 如何仅使用 math.h 将字符串转换为 double

我正在尝试将字符串转换为double字符串,但由于我正在处理Windowsnative应用程序(如仅链接到ntdll.dll),所以我没有大部分可用的标准库。我可以在math.h中使用基本的FP支持,但基本上就是这样。如何将字符串转换为最接近该字符串中表示的有理数的double? 最佳答案 如果你真的想得到最近的,这个问题就很难了,你需要任意精度的算法来实现这个结果。参见ftp://ftp.ccs.neu.edu/pub/people/will/howtoread.ps例如。 关于c++

c++ - 用迭代器计算矩阵 vector<vector<double>> 的列和?

在之前的帖子中columnvectorwithrowmeans--withstd::accumulate?我问是否有可能使用STL功能来计算矩阵的行均值vector>data(rows,vector(columns));@benjaminlindley的最佳答案不仅是我一直在寻找的,而且是一件美丽的事情。永远充满希望我认为计算列均值会很容易,所以STL等价于vectorcolmeans(data[0].size());for(inti=0;i在每个vector中不计算平均值,但跨所有vector中的相同索引:colmeans[0]==(data[0][0]+data[1][0]+...

c++ - DBL_MIN 是最小的正 double 吗?

问:DBL_MIN是最小的正double吗?下面的代码似乎没有回答这个问题。但如果这是真的,那么DBL_MIN是如何定义的,它的用途或目的是什么。平台:Windows7&VisualStudio2013doublenext_to_zero=std::nextafter(0.0,DBL_MIN);boolb=DBL_MIN输出:isdbl_minthesmallestrepresentabledouble?falsedbl_min=2.2250738585072013830902327173324040642192159804623318306e-308nexttozero=4.9406

c++ - 使用整数模板参数创建编译时 double

是否可以创建一个包含1*10^x值的double值,其中x基于整数模板参数。所以像这样:templatestructDoubleValue{staticconstexprdoublevalue=????;}doubled=DoubleValue::value;//=1e20doubled=DoubleValue::value;//=1e-20因为它可以用文字创建,所以看起来像这样的事情应该是可能的。我希望在编译时评估该值(据我所知,std::pow将不起作用)。另外,如果可能的话,我希望能够避免实际的迭代计算((可能是毫无根据的)对精度问题的恐惧)。我还希望能够使用更大的值作为指数,例

c++ - istream 提取的字符 >> double

示例代码atColiru:#include#include#includeintmain(){doubled;std::strings;std::istringstreamiss("234cdefipxngh");iss>>d;iss.clear();iss>>s;std::cout我在这里阅读N3337(大概与C++11相同)。在[istream.formatted.arithmetic]中我们有(释义):operator>>(double&val);Asinthecaseoftheinserters,theseextractorsdependonthelocale’snum_get

c++ - 如何将整数隐式转换为 double ?

inta{5},b{2},c{9};doubled=(double)a/(double)b+(double)c;或者我可以使用static_cast。无论哪种方式都是冗长的,尤其是当公式很长时。有更好的解决方案吗? 最佳答案 你可以乘以1.0:inta{5},b{2},c{9};doubled=1.0*a/b+1.0*c;当你处理总和时,你可以加到0.0:doubled=0.0+a-b+c;大多数编译器会执行优化,以便不评估无意义的操作。仅完成类型转换。请记住,您只需转换每个除法/乘法组中的第一个成员。以任何看似合理的方式这样做。简

c++ - 为什么要经历 static_cast 的麻烦——将数字转换为 double ?

在我正在处理的代码中遇到了这个问题:doublepart2=static_cast(2)*somthing1*(static_cast(1)+something2)+(static_cast(1)/static_cast(2))*something3+(static_cast(1)/static_cast(2))*pow(something4,3);(something是doubles。)我怀疑有一个很好的理由来解决这个问题static_cast(1)之类的,但似乎我可以少打很多字。我不明白什么?提前致谢。 最佳答案 许多stati