草庐IT

numeric-decimals

全部标签

c++ - c\c++ 中存储 COM 的 VT_DECIMAL 的正确类型是什么?

我正在尝试为ADO编写一个包装器。DECIMAL是COMVARIANT的一种类型,当VARIANT类型为VT_DECIMAL时。我试图将其放入c原生数据类型中,并保留变量值。似乎正确的类型是longdouble,但我得到“没有合适的转换错误”。例如:_variant_tv;...if(v.vt==VT_DECIMAL){doubled=(double)v;//thisworksbutI'mafraidcanbelossofdata...longdoubleld1=(longdouble)v;//error:morethenoneconversionfromvarianttolongdo

c++ - numeric_limits 是最小/最大常数吗?

C++11标准是否指定numeric_limits::min和max必须是可在模板中使用的常量表达式或static_assert?更一般地说,如何根据标准找到常量表达式的函数列表? 最佳答案 事实上,标准(或我最新的工作草案)在18.3.2.3[numeric.limits]章中将std::numeric_limits的所有成员列为constexpr(在此处实际引用这些定义没有任何好处),适用于通用模板化版本以及所有内置特化版本(18.3.2.7[numeric.special])。所以,是的,它们保证是常量表达式(当然,对于实际上

c++ - 我应该使用 numeric_limits 还是 C limit 宏?

我是SO的新手,这是我的第一个问题,但我已经阅读了规则,希望我不会违反任何规则。我最近开始学习编程,并选择了C++作为我的第一语言。今天我已经到了需要帮助才能做出正确决定的地步。我正在学习第6版的C++PrimerPlus,到目前为止,作者只介绍了C宏,对numeric_limits模板(至少我认为它是一个模板)只字未提由于我的好奇心,我从互联网上学到了东西。所以,现在我有点迷茫了,因为如果我理解正确的话,numeric_limits是一种检查C++类型限制的现代方法,因为它易于扩展。此外AF​​AIK在C宏中没有C++11类型的定义,如char16_t。搜索时我只找到了thatque

c++ - numeric_limits 的问题

为什么这不起作用?enum:long{MaxValue=std::numeric_limits::max()};我收到错误:错误1​​错误C2057:预期的常量表达式它有什么不固定的?longint的限制在编译时是已知的,那么问题是什么? 最佳答案 问题是虽然std::numeric_limits::max()函数返回常量值,它在运行时调用,您需要在编译时常量值也许你可以使用LONG_MAX值(请参阅climitsheader)? 关于c++-numeric_limits的问题,我们在S

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

c++ - 编程 : Principles and Practice Using C++ chapter 4 drill step 6 : General question about numeric range

我想提示用户输入一些double值,然后存储最小值和最大值,然后打印文本。这是我到目前为止的代码:#include#include#include#includeusingnamespacestd;intmain(){doublemin=1000000000;//Hereismyissue!doublemax=-100000000;//Hereismyissue!for(doubleinput;cin>>input;){if(input=='|')return0;elseif(inputmax){max=input;cout所以我的代码工作正常并且做我想做的,但我对处理双最小值和最大值

c++ - numeric_limits 中有错误还是我只是感到困惑?

我在调试一些涉及确定加法运算是否会下溢double的代码时遇到了一些奇怪的行为,至少在我看来是这样。这是一个示例程序,展示了我的发现。#include#includeusingstd::cout;usingstd::endl;usingstd::numeric_limits;intmain(){doublelowest=numeric_limits::lowest();booltruth=(lowest+10000)==lowest;cout当我执行这段代码时,结果为真。这是错误还是我只是sleep不足? 最佳答案 最小的doubl

c++ - operator>> 可以读取 int hex AND decimal 吗?

我可以说服C++中的operator>>读取hex值AND和decimal值吗?下面的程序演示了读取十六进制是如何出错的。我希望相同的istringstream能够读取hex和decimal。#include#includeintmain(intargc,char**argv){intresult=0;//std::istringstreamis("5");//thisworksstd::istringstreamis("0x5");//thisfailswhile(is.good()){if(is.peek()!=EOF)is>>result;elsebreak;}if(is.fai

c++ - std::numeric_limits<T>::digits 应该代表什么?

我正在编写一个类似整数的类,它代表一个位于某个范围内的值。例如,bounded::integer的值位于[0,10]范围内的某处。对于这个类,我定义了radix成为2.digits的值应该是多少?为bounded::integer?那bounded::integer呢?? 最佳答案 在进一步阅读标准并思考这个问题后,我相信我有最好的答案,但我不确定。首先是digits的定义,取自最新的C++14标准草案,N3797,§18.3.2.4:staticconstexprintdigits;8Numberofradixdigitsthat

c++ - 用于积分的 std::numeric_limits<T>::epsilon()

关于std::numeric_limits我没有任何好的引用,但网上的网站说std::numeric_limits::epsilon()将返回1之间的差异和它之后的最小数字。据我所知int类型,1之后的下一个数字是2,所以epsilon应该是1.但它是0(Linux,g++4.4.5)。这背后的原因是什么?我知道在实践中epsilon()仅对浮点类型有用,我只是吹毛求疵。 最佳答案 标准说([numeric.limits.members])Meaningfulforallfloatingpointtypes.标准还说([numeri