草庐IT

double-byte

全部标签

c++ - 让 std::complex<double> 通过 std::is_floating_point 测试

我想要类型double,float,complex和complex通过static_assert健康)状况。我想static_assert(std::is_floating::value,"somemessage")可以解决问题,但是复杂类型没有通过这个测试(至少在gcc-4.10下是这样)。我应该添加什么谓词来确保这四种类型(可能还有longdoubles)被允许作为模板实例化,但没有别的? 最佳答案 为标准库类型特征类添加特化通常是非法的,即使是用户定义的类型也是如此。§20.10.2[meta.type.synop]/p1:T

c++ - 如何将 double 转换为标准的 'long double'

如何按照C++标准将double转换为longdouble。我认为像这样转换不是正确的方法吗?doublevalue=1.2;longdoublenewValue=(longdouble)value; 最佳答案 这会很好地工作,但它不会神奇地在newValue中创建额外的精度。也就是说,它不会产生与以下相同的结果:longdoublenewValue=1.2L;这会将newValue设置为更接近1.2。 关于c++-如何将double转换为标准的'longdouble',我们在Stack

c++ - 是否可以使用 std::byte 作为枚举类的基础类型?

由于std::byte根据定义不是整数类型,因此以下片段格式错误:enumclassfoo:std::byte{bar=1,baz=2};在C++17中有没有办法做与此等效的事情?编辑:我不是要解决任何特定问题。显然enumclasswhatever:unsignedchar可以做到。但是,我希望std::byte更灵活一点,并且想知道这是否可能。 最佳答案 std::byte是definedbythestandard成为一个枚举类。因此,它有一个基础类型(unsignedchar)。所以你可以创建一个具有相同底层类型的枚举:enu

c++ - double not (!!) 用于非 boolean 变量有什么作用?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:DoubleNegationinC++code.我正在处理生产代码,我在其中遇到过几次这样的语句:Class.func(!!notABool);前几次我认为它是程序员的怪癖(也许是为了强调它是一个条件语句而不是传递给func的数字?)但我遇到过几个语句使用上面的内容,现在我想知道它是否真的有所作为。在大多数情况下,notABool是一个数字(int、float、double...我已经看到了所有3个)我最初的猜测是它类似于打字:Class.func((bool)notABool);但我不完全确定?

c++ - 如何使用 cin 读取 double 的全部值?

longdoublem;cout>m;cout输入:输入双倍数:1.546640625输出:米=1.54664我必须用点转换成二进制,当我读到像2.359375000这样的数字时输出:米=2.35938它有效,但我认为问题是1.546640625中的零 最佳答案 您已经阅读了double的全部值。问题出在cout上。它默认将值四舍五入到小数点后6位。要设置cout使用的精度,请使用setprecision来自:#include#includeusingnamespacestd;intmain(){longdoubled;cin>>d

c++ - 从 abs(double) 而不是 int 获得双重结果

我需要计算两个double值之差的绝对值,并得到一个double结果。相反,我得到一个int。#include//...printf("a:%sb:%sdelta:%sabs:%s\n",typeid(a).name(),typeid(b).name(),typeid(a-b).name(),typeid(abs(a-b)).name());//Prints:a:db:ddelta:dabs:i如果减法的结果已经是double,为什么abs不使用doubleabs(doublex);签名?事实上,它怎么可能返回一个整数呢?最重要的是,我如何强制它返回一个double?以防万一,a和b实

C语言再学习 -- 单精度(float)和双精度(double)浮点数 与 十六进制(HEX) 之间转换(转载))

之前讲过浮点数部分,参看:C语言再学习–浮点数现在程序中要将浮点数,通过TCP发送。那得先将其转换为十六进制才行呀。那么问题就来了。参看:C语言:单精度(float)和双精度(double)浮点数与十六进制(HEX)之间转换扩展:STM32开发–进制与字符串间的转换一、浮点数介绍单精度浮点float:可以精确到小数点后6位双精度浮点double:可以精确到小数点后12位C可以通过f或F后缀是编译器把浮点常量当做float类型,比如2.3f和9.11E9F。l或L后缀使一个数字成为longdouble类型,比如54.3l和4.32e4L。建议使用L后缀,因为字母l和数字1容易混淆没有后缀的浮点常

c++ - 错误 : ambiguates old declaration ‘double round(double)’

/usr/include/i386-linux-gnu/bits/mathcalls.h:311:1:error:ambiguatesolddeclaration‘doubleround(double)’g.cpp:Infunction‘intround(double)’:g.cpp:14:24:error:newdeclaration‘intround(double)’/usr/include/i386-linux-gnu/bits/mathcalls.h:311:1:error:ambiguatesolddeclaration‘doubleround(double)’#includ

c++ - 将 double 转换为字符数组 C++

我正在尝试将double转换(并舍入)为char数组,而不首先在double上使用std::to_string进行转换。但是,我收到的是随机内存文本。我究竟做错了什么?这是我的代码:doubled=1.0929998;d=std::round(d*100)/100;chars[sizeof(d)];std::memcpy(s,&d,sizeof(d));结果:s:q=×£pñ?预期值(value):s:1.09 最佳答案 您正在将double的文字字节翻译成char。double值是二进制表示(通常类似于IEEE754),而char

c++ - 如果float和double都不准确,那么银行如何进行涉及金钱的准确计算呢?

目前正在学习C++,这是我刚刚想到的。我只是对此感到好奇,因为我即将开发一个简单的银行程序。我将使用double来计算美元/利率等,但计算机计算和人工计算之间存在一些细微差别。我想现实世界中那些额外的.pennies可以让一切变得不同! 最佳答案 在许多情况下,财务计算是使用定点运算而不是浮点运算完成的。例如,.NETDecimal类型,或VB6Currency类型。这些基本上只是整数类型,每个人都同意单位是几分之一美分,比如$.0001。是的,必须进行一些舍入,但这是非常系统地完成的。通常,四舍五入规则在契约(Contract)细