草庐IT

C++ 浮点除法和精度

全部标签

c++ - 使用 lexical_cast<float>(string) 时会丢失精度

当使用boost::lexical_cast(我在VS2013上使用boost版本1.58)时,我无法获得字符串中指定的确切值,即使它可以用float表示:std::wstringt=L"91.25";floatr;r=boost::lexical_cast(t);r是91.249992(0x42B67FFF)而不是91.250000(0x42b68000)以前版本的boost以预期的方式运行。我是否缺少精确设置? 最佳答案 事实证明这与boost无关。这似乎是VisualStudio和VS2013的问题。#include#incl

将 double 添加到 long long 时出现 C++ 精度错误

这个问题在这里已经有了答案:ImplicittypeconversionrulesinC++operators(9个回答)关闭4年前。我注意到,在将double添加到longlong时,VisualStudio会出现精度错误。例如:longlonga=44981600439878676;doubleb=234567890;a+=b;a的结果是44981600674446560,但应该是44981600674446566。它发生在x32和x64上。但是以下返回正确的值:longlonga=44981600439878676;doubleb=234567890;a+=(longlong)b

c++ - 我无法捕获和处理浮点异常?

这个问题在这里已经有了答案:Catchingexception:dividebyzero(9个回答)关闭3年前。我尝试编写一个简单的程序来练习C++的Expection,但我无法捕获和处理浮点异常?这是我的代码。#include#include#includeusingnamespacestd;intmain(intargc,char**argv){intnum_1[]={0,2,4,6,8},num_2[]={3,2,1,0,-1};for(inti=0;i这是我的结果,但不是我想要的。0/3=02/2=14/1=4Floatingpointexception(coredumped)

c++ - 通过 Xbee 网络传输浮点值

我在通过简单的2节点Xbee网络传输float时遇到问题。我知道Xbee系统通过字节传输数据包,因此我可以发送一个字符,但我无法发送除此之外的任何内容,而且我似乎无法在任何地方找到任何文档。这是我当前的(基本)代码。发件人:(...appropriatesetup...)voidloop(){sensorValue=analogRead(analogInPin);sensorValueTemp=sensorValue/9.31;//LM35measurementintoCentigradeSerial.print(sensorValueTemp);delay(1000);}接收者:(.

c++ - 在 gmp 任意精度上生成正态分布

所以,我正在尝试使用gmp对于我正在做的一些计算,在某些时候我需要从正态分布中生成一个伪随机数(prn)。由于gmp有一个统一的随机变量,这已经很有帮助了。但是,我发现很难选择应该使用哪种方法从统一的方法生成正态分布。实际上,我的问题是gmp只有简单的操作,所以例如我不能使用cos或erf评估,因为我必须自己实现。我的问题是我可以在多大程度上从gmp上的正态分布生成prn,如果这非常困难,是否有任何已经实现正态分布的任意精度库。作为无效方法的两个示例(从thisquestion检索):Zigguratalgorithm使用f的评估,在这种情况下它是一个非整数指数,因此不受gmp支持。B

xilinx除法器的使用

平台:Vivado2018.3.芯片:xcku115-flva1517-2-i(active)最近学习使用了xilinx除法器,在使用过程中出现了很多次除法器的结果和我预计的结果不一致,特此记录学习一下。参考文件:pg151.下载地址pg151-div-gen.pdf•查看器•AMD自适应计算文档门户(xilinx.com)IP配置说明Xilinx除法器拥有三种模式Radix2:TheimplementationusesFPGAlogicprimitives(registersandLUTs).TheRadix2solutiondoesnotuseDSPorblockRAMprimitives

c++ - 将某些内容存储到 unordered_map 时出现浮点异常

我正在使用unordered_map作为C++中的HashMap,但每当我尝试在其中存储任何内容时,我都会得到:Floatingpointexception:8谁能指出错误是什么?以下是我如何初始化我的map(table_entry只是一个结构):std::tr1::unordered_mapforwarding_table;然后我在做一个条目:unsignedshortdest_id=0;table_entry*entry=(table_entry*)malloc(sizeof(table_entry));forwarding_table[dest_id]=entry;我的结构定义是

c++ - 具有复数的任意精度线性代数 c/c++ 库

我正在进行一项研究,涉及4维相空间中具有复数系数的线性微分方程。为了能够检查关于解的根的一些假设,我需要能够以任意精度在数值上求解这些方程。我曾经使用mpmathPython模块,但它运行缓慢,所以我更喜欢用C/C++重写我的程序以获得最大性能。所以我有一个问题:是否存在同时支持任意精度算术和复数的C/C++线性代数库?我需要一些基本功能,如点积等。(其实我也需要矩阵指数,但如果有需要我可以自己实现)。我尝试使用Eigen与MPFRC++,但由于它不支持复数这一事实而失败(并且像complex这样的构造不起作用,因为它假定基本类型是标准float)。 最佳答

C++ Boost 多精度 cpp_int

我尝试获取一个大数字的日志。我应该怎么做?我无法使用gmp.hpp,因为它显示Cannotopenincludefile:'gmp.h':Nosuchfileordirectory下面的代码#include#include#definersa100"1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139"usingnamespacestd;usingnamespaceboost::multiprecision;intmain(){cpp_in

c++ - 浮点类型模板函数中的文字

这个问题以前出现过,特别是在这里Shouldwegenerallyusefloatliteralsforfloatsinsteadofthesimplerdoubleliterals?但我想知道现在我们在C++14领域并且存在用户定义文字和大括号初始化之类的东西,是否有更好的建议解决方案。问题可以表示为如何在浮点类型的模板函数中编写floattemplateTfoo(Tx){static_assert(std::is_floating_point::value,"");Ty=x*101.0;return(y);}所以问题归结为我们如何写“101.0”,因为它是一个double,所以如果