草庐IT

double-byte

全部标签

c++ - Qt - 序列化 "double"时出现问题

我序列化“double”数据类型并得到一个错误QDataStream&operator运算符已定义。这是错误消息:error:conversionfrom'double'to'constQChar'isambiguous您遇到过这种情况,或者理解为什么会变成这样吗? 最佳答案 听起来它看不到double的运算符,因此它试图从double隐式创建一个QChar以发送到流,但是QChar有可能匹配的多个构造函数。确保您的header包含的内容都是正确的。你能告诉我们你试图序列化替身的代码吗?

c++ - 如何在 C++ 中精确显示 double 的小数位?

ProblemGiventwointegersa,b,aSampleInput3734580011299053122SampleOutput.428751Thelast6digitsrepeatforever..43125Thisexpansionterminates..113Thelast2digitsrepeatforever..4344262295081967213114754098360655737704918032786885245901639Thelast60digitsrepeatforever.注意:此问题源自ProgFest编程竞赛。如果我们应用这三个定理,这个问题的

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

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++ - gdb 显示不正确的 double 值

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

c++ - 如果实数可以用 double 表示,我如何编写返回 true 的 C++ 函数?

如果实数可以用double表示,我如何编写返回true的C++函数?boolisRepresentable(constchar*realNumber){boolanswer=false;//whatgoeshere?returnanswer;}简单测试:assert(true==isRepresentable("0.5"));assert(false==isRepresentable("0.1")); 最佳答案 将数字解析为a+N/(10^k)的形式,其中a和N是整数,k是您的小数位数。示例:12.0345->12+345/10^4

c++ - 首选哪个,return const double& OR return double

给定以下场景,以下哪一项是首选。m_state是一个成员评价者,而不是局部变量。classC{private:doublem_state;public:doublestate()const{returnm_state;}//returnsdoubledouble&state(){returnm_state;}}===========================================classC{private:doublem_state;public:constdouble&state()const{returnm_state;}//returnsconstdouble&

c++ - 将 vector<string> 转换为 vector<double> 的便捷方法

除了使用变换算法和istringstream之外,C++中是否有任何方便的方法将vector转换为vector?非常感谢您的帮助! 最佳答案 lexical_cast相当“方便”。for(size_ti=0;i(vec[i]));}当然,使用std::transform会变得更加有趣:std::transform(strings.begin(),strings.end(),std::back_inserter(doubles),boost::lexical_cast);//Notethetwotemplatearguments!at

c++ - double 的高性能加法和乘法的常量形式

我需要在循环中有效地将一些常量添加或乘以double类型的结果以防止下溢。例如,如果我们有int,则乘以2的幂将很快,因为编译器将使用位移位。是否有一种常量形式可用于高效的double加法和乘法?编辑:似乎没有多少人理解我的问题,为我的草率道歉。我将添加一些代码。如果a是一个int,这个(乘以2的幂)会更有效率inta=1;for(...)for(...)a*=somefunction()*1024;当1024被替换为1023时。不确定如果我们想添加到int什么是最好的,但这不是我的兴趣。我对a是double的情况很感兴趣。哪些形式的常量(例如2的幂)可以有效地和相乘成double?常

c++ - std::numeric_limits<double>::epsilon() 在 Visual C++ 2015 中未定义

以下代码产生错误:std::numeric_limits::epsilon()未定义的错误。使用numeric_limits::epsilon也会产生此错误。#ifndef_USE_MATH_DEFINES#define_USE_MATH_DEFINES#endif//!_USE_MATH_DEFINES#include#includeclassplusCartesianPoly{public:staticboolisClose(doublea,doubleb){if(fabs(a-b) 最佳答案 numeric_limits在li