草庐IT

double-touch

全部标签

c++ - vector< vector <double>> 与 swig 和 python 的参数

我正在尝试弄清楚如何使用SWIG包装一个将2dvector返回给python的c++函数。我有文件functions.h#includestd::vector>array_mean(std::vector>array){std::vector>mean_array(rows,std::vector(cols));....returnmean_array;}在接口(interface)文件functions.i中有%modulefunctions%{#include"functions.h"%}%include"std_vector.i"namespacestd{%template(Ve

c++ - 乘以 float 并保持/获得 double 精度

我有一个接受float的函数,我正在用它们做一些计算,我想尽可能保持返回结果的准确性。我读到,当您将两个float相乘时,有效数字的数量就会翻倍。所以当两个float相乘时,例如floate,f;我做doubleg=e*f,位何时被截断?在我下面的示例函数中,我是否需要强制转换,如果需要,在哪里?这是一个紧密的内部循环,如果我把static_cast(x)围绕每个变量abcd在使用它的地方,我会减速5-10%。但我怀疑我不需要单独转换每个变量,而且只需要在某些位置转换,如果有的话?还是在这里返回一个double不会给我任何yield,我也可以只返回一个float?doublefunc(

c++ - 输出精度高于 double

我正在打印C++程序中的一些数据,以供ParaView处理/可视化,但我遇到了float问题。Paraview支持Float32和Float64两种数据类型。Float64相当于典型限制+/-1.7e+/-308的double。但是,我的代码正在打印像6.5e-318这样的数字。这在读取数据时会在ParaView中抛出错误。我已经验证将这些小数字四舍五入为零会使ParaView中的错误消失。我不确定为什么我有如此“高精度”的输出,可能是因为一些数字的存储精度高于double。例如,以下代码在我的系统上重现了相同的行为:#includeintmain(void){constdoublev

c++ sizeof operator - 指向double的指针

我在使用sizeof运算符(C++)时得到了意想不到的结果。在主课中,我有这些行double*arguments_=newdouble();*arguments_=2.1;*(arguments_+1)=3.45;cout这给我输出480Doublesize是8个字节,而且(sizeofarguments_[0])=8。但是,为什么(sizeofarguments_)也不是用字节表示的(2*8=16)?sizeof运算符是否适用 最佳答案 两个值都以相同的单位表示。你有一个32位系统,所以地址的大小是32位,或4个字节。在你的系统上

c++ - 如何将 double 舍入到 n 位小数?

这个问题在这里已经有了答案:Roundafloattoaregulargridofpredefinedpoints(11个答案)关闭5年前。我试图在标准库中找到一个round函数,但没有找到。有没有办法在C++中将double舍入为n位小数?

c++ - float 到整数的精度与 double 到整数的精度,意想不到的结果

我是计算机工程专业的学生,​​在BYU-Idaho辅导C++入门类(class),一名学生成功地难倒了我。如果为此编写代码:#includeusingnamespacestd;intmain(){floaty=.59;intx=(int)(y*100.0);cout结果=58#includeusingnamespacestd;intmain(){doubley=.59;intx=(int)(y*100.0);cout结果=59我告诉他这是一个精度问题,因为int比float更精确,所以它会丢失信息。double比float更精确,所以它可以工作。但是我不确定我说的是否正确。我认为这与用

C++:将 "boost::multiprecision::float128"转换为 "double"

我正在使用boost多精度库,更准确地说是boost::multiprecision::float128类型。使用ICPC进行编译时,我在尝试执行以下操作时遇到一些错误:doublea=functionA();其中functionA()返回一个boost::multiprecision::float128变量。error:nosuitableconversionfunctionfrom"boost::multiprecision::float128"to"double"exists|我该如何解决这个问题? 最佳答案 来自Boost文

c++ - 为什么 "is_modulo"对于 double 和 float 是假的?

我写了一些代码来检查一个类型是否有模表示:#include#includeusingnamespacestd;intmain(){cout::is_modulo::is_modulo输出:Whetherfloatobjectshaveamodulorepresentation:0Whetherdoubleobjectshaveamodulorepresentation:0但是我们可以使用fmod()(来自)找到float的模数或double.那么,为什么is_modulo如果可以找到float或double的模数,则为false? 最佳答案

c++ - 在 C++ 中获取 double 的精确位表示

假设我们有一个双倍数,比方说,x=4.3241;很简单,我想知道,在C++中,如何简单地为数字表示中的每个位检索一个int?我看过其他questions并阅读bitset上的页面,但恐怕我仍然不明白如何检索这些位。所以,例如,我希望输入是x=4.53,如果位表示是10010101,那么我想要8个整数,每个代表每个1或0。 最佳答案 类似于:doubledoubleValue=...whatever...;uint8_t*bytePointer=(uint8_t*)&doubleValue;for(size_tindex=0;inde

c++ - 关于long long和long double

它们什么时候成为标准C++的一部分?我认为longlong是C++0x的特性,对吗?longdouble怎么样?它已经在C++98或C++03中了吗? 最佳答案 longdouble和longlong已经存在了很长一段时间,并分别在C89和C99中标准化。C++从其第一个版本C++98标准化了longdouble,并将在即将到来的标准修订中添加longlong。 关于c++-关于longlong和longdouble,我们在StackOverflow上找到一个类似的问题: