草庐IT

Double-precision_floating-point_f

全部标签

c++ - "double"的操作和 C 中的优化

我最近分析了一段用VS2005编译的旧代码,因为在“调试”(无优化)和“发布”(/O2/Oi/Ot选项)编译中存在不同的数值行为。(简化的)代码如下所示:voidf(doublex1,doubley1,doublex2,doubley2){doublea1,a2,d;a1=atan2(y1,x1);a2=atan2(y2,x2);d=a1-a2;if(d==0.0){//NOTE:Iknowthat==onrealsis"evil"!printf("EQUAL!\n");}函数f如果使用相同的值对调用(例如f(1,2,1,2)),则预计会打印“EQUAL”,但这并不总是发生在“发布”中

c++ - 16 位 float MPI_Reduce?

我有一个分布式应用程序,它使用MPI_Reduce()进行某些通信。在精度方面,我们使用16位float(半精度)得到完全准确的结果。要加速通信(减少数据移动量),有没有办法在16位float上调用MPI_Reduce()?(我查看了MPI文档,没有看到任何关于16位float的信息。) 最佳答案 MPI标准在其内部数据类型中仅定义了32位(MPI_FLOAT)或64位(MPI_DOUBLE)float。但是,您始终可以创建自己的MPI_Datatype和您自己的自定义归约操作。下面的代码给出了一些关于如何执行此操作的粗略概念。由于

c++ - std::string 到 float (通过 std::stof)精度

我正在尝试解决这个问题,市场数据以字符串形式返回货币值,该字符串在数字长度后8位。money="124.19000540"我需要它是124.19,知道如何实现吗?std::stof(money)=124.19000244如何克服这个问题? 最佳答案 浮点类型不适合保存货币值。如果您满足于四舍五入到美分,并将钱存储为美分的整数(这是最简单的解决方案之一),您可以这样做:longnumCents=static_cast(100*std::stof(money))这将进行“截断”舍入,它总是向下舍入。如果您想“四舍五入到最接近的美分”,请

c++ long double 精确打印所有数字

关于我的问题,我在这里看到了一篇帖子,但不明白,因为我是C++的新手。我写了一个小脚本,它从用户那里获取一个数字,脚本打印出输入数字的阶乘。一旦我输入更大的数字,如30,脚本不会打印出所有数字。输出就像2.652528598E+32但是我想要的是确切的数字265252859812191058636308480000000。有人可以解释如何以长double获取所有数字。提前致谢 最佳答案 您可以将输出流的精度设置为任何您想要的精度,以获得您想要的结果。http://www.cplusplus.com/reference/ios/ios

c++ - 简洁准确的 double 打印

我有一个doublex,我想将其打印为字符串s。我希望表示服从以下属性:准确:(x-atof(s))的绝对值小于epsilon简洁:表示不包含比准确要求更多的有效数字执行此操作的最佳方法是什么?为了说明为什么%f和%g没有完成这项工作:printf("%f\n",1.0);//1.000000notconciseprintf("%g\n",1.0);//1goodprintf("%f\n",4357890.2342389);//4357890.234239goodprintf("%g\n",4357890.2342389);//4.35789e+06notaccurate

c++ - 如何在 Qt 中打印所有小数点的 double 值?

首先,这不是重复的。我在网上搜索过,但没有足够的答案。我想打印一个double。所以我必须将它转换为QString。我想要没有科学计数法,0.1应该打印0.1和1/3应该打印尽可能多的0.33333...double能够表示。不幸的是,我只能找到具有固定精度的解决方案,这会导致上限为0.333333(在指定的p松动精度后结束)或不必要的零填充0.100000。我知道我可以最大化精度并删除所有尾随零,但是否有一个很好的解决方案,它只打印最大可能但最小必要精度?编辑:我想我需要澄清一些事情。这道题不是要将实数空间映射成单精度、double或任何精度的float。它是关于逆向的:将64位do

c++ - 深度神经网络的图像识别精度,float 还是 double?

用于图像识别的神经网络可能非常庞大。可以有数千个输入/隐藏神经元,数百万个连接什么的会占用大量计算机资源。同时float通常是32位和doublec++64位,它们在速度上没有太大的性能差异,但使用float可以节省一些内存。有一个神经网络正在使用什么sigmoid作为激活函数,如果我们可以选择神经网络中的哪些变量可以是float或double哪个可以float以节省内存而不会使神经网络无法执行?虽然训练/测试数据的输入和输出绝对可以是float因为它们不需要double,因为图像中的颜色可以仅在0-255范围内,当归一化为0.0-1.0比例时,单位值为1/255=0.0039~1。隐

c++ - 如何使用 avx 指令将 float vector 转换为 short int?

基本上,我如何使用AVX2内在函数编写与此等效的内容?我们这里假设result_in_float是__m256类型,而result是shortint*或短整数[8]。for(i=0;i我知道可以使用__m256i_mm256_cvtps_epi32(__m256m1)内在函数将float转换为32位整数,但不知道如何将这些32位整数进一步转换为16位整数。而且我不仅想要那个,还想要将这些值(以16位整数的形式)存储到内存中,我想全部使用vector指令来完成。在互联网上搜索,我发现了一个名为_mm256_mask_storeu_epi16的内在函数,但我不确定这是否能解决问题,因为我找

javascript - C# 十进制到 C++ float 和 javascript 数字

我有一个用C#编写的TCP服务器。我必须编写两个客户端(c++和javascript)。我可以在c#客户端中反序列化十进制(16字节-128位),但我无法反序列化其他语言。小数不要太大,我可以使用float或double。序列化小数时:MemoryStreamcombinedMessage=newMemoryStream();decimald=2135102.06m;using(BinaryWriterwriter=newBinaryWriter(combinedMessage,encoding)){writer.Write(d);}byte[]message=combinedMess

c++ format cout with "right"and setw() for a string and float

我正在尝试格式化一个“cout”,它必须显示如下内容:Result$34.45金额($34.45)必须在右侧索引上,并带有一定数量的填充或在特定列位置结束。我尝试使用cout但是,它是为“$”字符串设置宽度,而不是为字符串加金额设置宽度。关于处理此类格式有什么建议吗? 最佳答案 您需要将"$"和值34.45组合成单独的字符串。像这样尝试:#include#include#include#includeusingnamespacestd;intmain(){stringstreamss;ss