草庐IT

malign-double

全部标签

android - 联发科处理器上的 double 值计算错误

我发现我在市场上发布的一个应用程序在某些手机上产生了奇怪的结果。经调查发现,一个计算两个GeoPoints之间距离的函数存在问题-有时它返回完全错误的值。此问题仅在具有MediaTekMT6589的设备上重现SoC(又名MTK6589)。并且AFAIK所有此类设备都安装了Android4.2。更新我还能够在LenovoS6000平板电脑上重现该错误,使用MediaTekMT8125/8389芯片和上FlyIQ444Quattro安装了MT6589和Android4.1。我创建了一个有助于重现错误的测试项目。它重复运行计算1'000或100'000次迭代。为了排除线程问题的可能性,计算是

android - 在Android中将字符串转换为 double

尝试从EditText获取double值并在将它们传递给另一个Intent之前对其进行操作。不使用原始数据类型,所以我可以使用toString方法。问题是当我包含protein=Double.valueOf(p).doubleValue();样式命令,程序强制立即关闭,而不会在logcat中留下任何信息。如果我将它们注释掉并设置一些虚拟数据,例如protein=1.0;它没有问题。原始数据类型和解析double也会发生同样的情况。此代码与普通java中的虚拟数据完美配合。我做错了什么?EditTexttxtProt,txtCarb,txtFat,txtFiber,txtPoints;S

android - 如何将 double 和 float 值插入 sqlite?

以下是我的数据库创建代码。@OverridepublicvoidonCreate(SQLiteDatabasedb){db.execSQL("CREATETABLE"+TABLE_NAME+"("+_ID+"INTEGERPRIMARYKEYAUTOINCREMENT,"+TIME+"INTEGER,"+LONGI+"TEXT,"+LATI+"TEXT,"+SPEED+"TEXT,"+ACCU+"TEXT);");}然后是添加数据点代码privatevoidaddGeoDataEntry(doublelogi,doublelati,floatspeed,floataccu){SQLit

Scala - 在这种情况下,为什么 Double 消耗的内存比 Floats 少?

这是我遇到的一种奇怪行为,我找不到任何关于为什么会这样的提示。我在这个例子中使用estimatemethodofSizeEstimatorfromSpark但我没有在他们的代码中发现任何故障,所以我想知道为什么-如果他们提供了良好的内存估计-为什么我有这个:valbuf1=newArrayBuffer[(Int,Double)]vari=0while(i控制台输出打印:Rawsizewithdoubles:200Sizewithdoubles:96Rawsizewithfloats:272Sizewithfloats:168所以我的问题很幼稚:为什么在这种情况下float往往比doub

c++ - 比较 double

我正在编写一个由while循环组成的程序,该循环读取两个double并打印它们。该程序还会打印较大的数字和较小的数字。这是我目前的代码。intmain(){//VARIABLEDECLARATIONSdoublea;doubleb;while(a,b!='|')//WHILEA&BDONOTEQUAL'|'{cin>>a>>b;cout如果两个数字相差小于1.0/10000000,则下一步是让程序写出“数字几乎相等”。我该怎么做? 最佳答案 这是我将如何测试平等,没有“捏造因素”:if(//Test1:Verycheap,butca

c++ - 将 vector<double> 转换为 vector<string> (优雅的方式)

我想知道是否有优雅的方式或内置函数来转换vector至vector.我做的很简单#include#include#include#includestd::vectordoubeVecToStr(conststd::vector&vec){std::vectortempStr;for(unsignedinti(0);idoubleVec;doubleVec.push_back(1.0);doubleVec.push_back(2.1);doubleVec.push_back(3.2);std::vectordoubleStr;doubleStr=doubeVecToStr(doubleV

c++ - 为什么 double 可以存储比 unsigned long long 更大的数字?

问题是,我不太明白为什么double可以存储比unsignedlonglong更大的数字。由于它们都是8字节长,所以64位。在unsignedlonglong中,所有64位都用于存储值,另一方面,double有1表示符号,11表示指数,52表示尾数。即使使用52位(用于尾数)来存储没有浮点的十进制数,它仍然是63位...但是LLONG_MAX明显小于DBL_MAX...为什么? 最佳答案 原因是unsignedlonglong将存储exact整数,而double存储尾数(有限的52位精度)和指数。这允许double存储非常大的数字(

c++ - 列表中 double 和 float 对象的大小是否相等?

我想知道从std::list的角度来看float和double对象的大小是否相等?我在std::list中分配了500万个Real(别名float或double)对象,并使用Valgrind监控内存使用情况。在这两种情况下,使用的内存是相等的,尽管'double'(8字节)的大小是'float'对象(4字节)大小的两倍!顺便说一句,当我使用“new”运算符为相同数量的对象分配内存时,double组的内存使用量是float组使用量的两倍,这似乎是正确的。我也期待使用std::list也一样。我在Fedora16.x86_64上使用gcc4.6.2。感谢任何能帮助我解开谜团的想法。这是我为

c++ - double 的有效小数位数?

C/C++标准对double的最小有效十进制数字有什么保证??C++标准实际上在§18.3.2.4/10的脚注中说这相当于DBL_DIG如C标准中定义的那样。但是我在C标准中找不到任何关于最小值的信息。那么,以下其中一项的最小值是多少?std::numeric_limits::digits10DBL_MANT_DIG编辑:不,DBL_DIG 最佳答案 你不会在C++标准中找到它,因为C++在这个标准上遵循C标准。对于十进制数字,最小值为:FLT_DIG6DBL_DIG10LDBL_DIG10因此,float为6位,double和lo

c++ - 为什么关于未初始化变量的 g++ 警告取决于变量的类型? (它警告一个 int 但不是一个 double)

我目前正在尝试了解g++在哪些情况下会警告未初始化的变量。考虑以下代码:#includetypedefdoublebarType;structfoo{barTypebar;};intmain(){foof;std::cout如果我像这样编译它,我不会收到任何警告:$g++-O1-Walltest.cc-otest但如果我将barType更改为int:$g++-O1-Walltest.cc-otesttest.cc:Infunction‘intmain()’:test.cc:17:warning:‘f.foo::bar’isuseduninitializedinthisfunction警