草庐IT

malign-double

全部标签

MongoDb - 将类型从 Int 更改为 Double

我们有一个如下所示的集合:{"_id":"10571:6","v":261355,"ts":4.88387e+008}现在,有些“v”是整数,有些是double。我想把它们都改成double。我尝试了一些方法,但没有任何效果(v是该记录的int32,我想将其更改为double):db.getCollection('VehicleLastValues').find({_id:"10572:6"}).forEach(function(x){temp=x.v*1.0;db.getCollection('VehicleLastValues').save(x);}}我尝试过的事情:x.v=x.v

node.js - 错误 : "Double colon in host identifer"

我正在尝试连接到我在MLab托管的数据库。我正在使用StrongLoopAPI。我已将托管数据库的配置信息放入我的datasources.json和config.json文件中,但是每当我使用npmstart运行目录时,我都会得到thrownewError('double主机标识符中的冒号';)在api\node_modules\mongodb\lib\url_parser.js:45.我还确保安装loopback-connecter-mongodbnpm包。这是datasources.json的片段(当然没有实际的数据库详细信息):{"db":{"name":"db","connec

c++ - int->double->int 是否保证保值?

如果我有int,将其转换为double,然后将double转换回int,我能保证获得与开始时相同的值(value)吗?换句话说,给定这个函数:intpassThroughDouble(intinput){doubled=input;returnd;}我是否保证passThroughDouble(x)==x对于所有intsx? 最佳答案 不,不是。该标准没有说明int和double的相对大小。如果int是64位整数并且double是标准IEEEdouble,那么对于大于2^53的数字,它已经失败了.也就是说,int在今天的大多数环境中

存储Double vs int->查询时间和摄取时间

我有一个数字类型的列。我不确定是整数还是小数号。这里有两个选择:无论是整体还是十进制,我都可以将数字存储为两倍。如果是小数,则可以推断该类型并将数字存储为双重,如果是小数或int。然后,我的问题是,将其存储成双重要简单得多(因为int可以将其表示为“5.0”),因此,如果将某些东西存储为doublevsaint,则摄入时间和查询时间有什么区别。错误地将INT的类型存储为双重的类型是如何“昂贵”的?看答案根据BigQuery定价桌,整数和浮点数都使用8个字节,因此实际成本将相同。这BigQuery浮点类型是64位。(我相信双,浮动和float64是同义词,基于其余文档)

c++ - 了解 double 到 int64_t 的转换

所以我有两个函数,一个只是从double转换为int64_t,另一个调用std::round:std::int64_tmy_cast(doubled){autot=static_cast(d);returnt;}std::int64_tmy_round(doubled){autot=std::round(d);returnt;}它们工作正常:cast(3.64)=3和round(3.64)=4。但是,当我查看程序集时,他们似乎在做同样的事情。所以想知道他们如何得到不同的结果?$g++-std=c++1y-c-O3./round.cpp-o./round.o$objdump-dS./ro

c++ - 英特尔 AVX : 256-bits version of dot product for double precision floating point variables

英特尔高级vector扩展(AVX)在256位版本(YMM寄存器)中不为double浮点变量提供点积。“为什么?”这个问题在另一个论坛(here)和StackOverflow(here)上得到了非常简短的处理。但我面临的问题是如何以有效的方式用其他AVX指令替换这条缺失的指令?256位版本中的点积适用于单精度浮点变量(referencehere):__m256_mm256_dp_ps(__m256m1,__m256m2,constintmask);我们的想法是为这个缺失的指令找到一个有效的等价物:__m256d_mm256_dp_pd(__m256dm1,__m256dm2,const

c++ - 为什么 printf() 将 float 提升为 double ?

来自上一个question:Ifyouattempttopassafloattoprintf,it'llbepromotedtodoublebeforeprintfreceivesitprintf()是可变参数函数吗?那么可变参数函数是否在传递float参数之前将其提升为double? 最佳答案 是的,可变参数函数的浮点参数被提升为double。draftC99standard6.5.2.2部分函数调用说:[...]andargumentsthathavetypefloatarepromotedtodouble.Theseareca

c++ - float 和 double 的快速乘法/除法 (C/C++)

在我正在编写的软件中,我正在对我的值进行数百万次乘法或除以2(或2的幂)。我真的希望这些值为int这样我就可以访问位移运算符inta=1;intb=a但是,我不能,我必须坚持double。我的问题是:由于有标准的double表示(符号、指数、尾数),有没有办法使用指数来获得2的幂的快速乘法/除法?我什至可以假设位数将是固定的(该软件将在始终具有64位长double的机器上运行)P.S:是的,算法大多只做这些操作。这是瓶颈(它已经是多线程的了)。编辑:还是我完全弄错了,聪明的编译器已经为我优化了?临时结果(用Qt来测量时间,矫枉过正,但我​​不在乎):#include#include#i

c++ - 在 C++ 中以高性能将 double 转换为 char*

我的应用程序需要将double值转换为char*以写入仅接受字符的管道。执行此操作的常用方法是使用sprintf()函数或使用iomanip.h头文件中的ostringstream。事实证明,这两者的表现都非常糟糕。而且我的应用程序需要经常进行这种转换,以至于它成为主要的瓶颈。还有其他功能可以使用吗?我可以使用什么逻辑来编写高效的转换函数?到目前为止,我唯一能想到的就是使用除法和mod操作来获取每个单独的数字,并将这些数字附加到char*以获得整个double值。不过,这似乎不是一个好方法,而且本身的性能可能会很差。提前感谢您的想法。编辑:关于如何使用char*存在一些混淆。char*

c++ - 如何 'cout' double 值的正确小数位数?

我需要帮助来保持double的精度。如果我将文字分配给double,则实际值会被截断。intmain(){doublex=7.40200133400;std::cout对于上面的代码片段,输出是7.402有没有办法防止这种类型的截断?或者有没有办法准确计算double的float?例如,number_of_decimal(x)会给出11,因为输入在运行时是未知的,所以我不能使用setprecision()。我想我应该把我的问题改成:如何在不截断float的情况下将double转换为字符串。即#include#include#includetemplatestd::stringtype_