草庐IT

Double-precision_floating-point_f

全部标签

c++ - 输出到精确流 float

我对float精度有疑问:intmain(void){doubleb=106.829599;floata=b;std::cerr结果是:a=106.83;b=106.83a=106.8296;b=106.8296所以,我的问题是为什么第一行的数字这么短(我期待看到106.829)gcc4.1.2,我也在LWS做了测试 最佳答案 实际上,106.829599四舍五入到6位数字(3位小数)是106.830,显示为106.83,因为setprecision的6位精度被赋予了只是一个最大值。Thedecimalprecisiondeterm

c++ - "the procedure entry point _ZNSt8_detail15_List_node_base7_M_hookEPS0_ could not be located in the dynamic link library libstdc -6.dll."

有个小问题。我有C++代码,它链接到一些库。我以前有源代码的(原始)exe,它在第一台机器上运行完美。还有第二台机器,我在那里处理源代码,更改它,等等。在第二台机器上,该源代码的构建工作正常,当我复制second.exe并尝试在第一台机器上运行它时萌芽它显示错误信息"theprocedureentrypoint_ZNSt8_detail15_List_node_base7_M_hookEPS0_couldnotbelocatedinthedynamiclinklibrarylibstdc++-6.dll."有一件事,second.exe被复制到与original.exe相同的文件夹中,

c++ - 如何检查float是否为整数?

如果float为3.00,printf函数的%g能够显示整数3,并将显示3.01如果float不是整数float。如果不将数字格式化为字符串,您如何通过一些代码自己完成此操作? 最佳答案 没有真正简单的答案整数值在float和double格式中确实有精确的表示。所以,如果它真的已经是完整的,您可以使用:f==floor(f)但是,如果您的值是计算的结果,其中某一点涉及任何类型的非零小数部分,那么您需要担心您可能有一些非常接近整数但不是整数的东西真的,完全一样,到最后一点都一样。您可能希望将其视为不可或缺的一部分。一种可能的方式:fa

c++ - 警告 C4244 : 'argument' : conversion from 'double' to 'const int' , 可能丢失数据

我正在定义“*”运算符以使用“NumericArray”类模板。代码如下:templateNumericArrayNumericArray::operator*(constT&factor)const{NumericArraynewArray(Size());for(inti=0;i当我尝试将类型为“int”的“NumericArray”(NumericArray)与“*”运算符一起使用时,当“factor”参数为double时:intArray1=intArray1*2.5;我收到以下编译器警告:warningC4244:'argument':conversionfrom'doubl

C++ chrono - 将持续时间作为 float 或 long long

我有一个持续时间typedefstd::chrono::high_resolution_clockClock;Clock::time_pointbeginTime;Clock::time_pointendTime;autoduration=std::chrono::duration_cast(endTime-beginTime);我在std::chrono::milliseconds中得到了duration。但我需要duration作为float或longlong。如何做到这一点? 最佳答案 来自documentationtempl

java - 在现在的C++和Java中,double类型和float类型: if (x == 0. 0)是正确的吗?

这个问题在这里已经有了答案:doublearithmeticandequalityinJava(3个答案)关闭8年前。根据我的旧知识:当我们想要检查double或float是否等于0.0时,我们不应该这样写:doublex=0.0;if(x==0.0)System.out.println("yes");elseSystem.out.println("no");但是几分钟前,我在Java(1.7)和C++(AppleLLVM6.0版)下再次尝试了,这样写是没有问题的!我分别在Java和C++下尝试了“double”类型和“float”类型。我的问题:我是不是漏掉了什么,或者我们真的可以检

c++ - 解析 float 的 C 字符串

我有一个C字符串,其中包含一个由逗号和空格分隔的float列表。每对数字由一个(或多个)空格分隔,并表示一个点,其中x和y字段由逗号分隔(也可以由空格分隔)。"10,92.5,34,150.32"我需要解析这个字符串以填充Point(x,y)列表。以下是我当前的实现:constchar*strPoints=getString();std::istringstreamsstream(strPoints);floatx,y;charcomma;while(sstream>>x>>comma>>y){myList.push(Point(x,y));}因为我需要解析很多(最多500,000个)

c++ - QMetaType::Float 不在 QVariant::Type 中

我有一个运行良好的应用程序,但它不是在打开警告的情况下编译的。我正在尝试将其重新打开并整理它们,但没有关于如何解决此问题的想法。我有:QVariantsomeVarQVariant::TypevariantType=someVar.type();switch(variantType){caseQMetaType::QString:doSomething1();break;caseQMetaType::Float:doSomething2();break;}并收到此警告/错误:error:casevalue‘135’notinenumeratedtype‘QVariant::Type’[

c++ - 将 float 分配给字符串引用是可行的——为什么?

这个问题在这里已经有了答案:Assigndoubletostd::string--nocompileerror?[duplicate](3个答案)关闭6年前。在最近的一个项目中,我遇到了一个错误,我不小心将float分配给了字符串引用(而不是将float转换为字符串,然后再分配)。代码看起来像这样(在Xcode/AppleLLVM7.1和GCC4.9.2下测试):#includeusingnamespacestd;staticvoidget_text(string&s){s=1.0f;//Legal(notevenawarning!)}//Thisversiongivesacompil

c++ - gdb 显示不正确的 double 值

我的程序有一个奇怪的行为,其中double失去了精度。我的cout显示了正确的值,但行为仍然出乎意料。因此我调试并发现甚至gdb显示意外值。以下只是简化的场景:doublelength=2.11;//gdbshows2.10herebutprints2.11correctlyusingcoutattheendcout在无法调试且唯一的选择是使用尽可能多的打印件的生产场景中,通常很难发现此类问题。有什么建议可以避免这个问题吗? 最佳答案 假设IEEE754doublefloat,最接近2.11的double略小2.1099999999