草庐IT

精度评定

全部标签

c++ - Visual C++ 中的浮点精度

你好,我正在尝试使用robustpredicatesJonathanRichardShewchuk的计算几何。我不是程序员,所以我什至不确定我在说什么,我可能犯了一些基本错误。要点是谓词应该允许具有自适应浮点精度的精确运算。在我的电脑上:Asuspro31/S(CoreDueCentrino处理器)它们不工作。问题可能在于我的计算机可能使用了浮点精度方面的一些改进,这与Shewchuk使用的精度存在冲突。作者说:/*Onsomemachines,theexactarithmeticroutinesmightbedefeatedbythe*//*useofinternalextended

c++ - strtoull() 的输出在转换为 double 然后返回 uint64_t 时失去精度

考虑以下几点:#include#includeintmain(){std::cout打印:0xffffffffffffffff0x00xffffffffffffffff第一个数字只是转换ULLONG_MAX的结果,从字符串到uint64_t,按预期工作。但是,如果我将结果转换为double然后回到uint64_t,然后打印0,第二个数字。通常,我会把这归因于float的精度不准确,但更让我困惑的是,如果我转换ULLONG_MAX来自uint64_t至double然后回到uint64_t,结果是正确的(第三个数字)。为什么第二个和第三个结果不一样?编辑(@RadoslawCybulski

c++ - C++ 的最佳(速度)任意精度库是什么?

这个问题在这里已经有了答案:Whatarethebest(portable)cross-platformarbitrary-precisionmathlibraries?[closed](5个答案)关闭8年前。我需要可用于C++的最快的库。我的平台将是支持float的x86和x86-64。

c++ - 从 float 到 double 和从 double 到 float 的精度损失?

floatfv=orginal_value;//original_valuemaybeanyfloatvalue...doubledv=(double)fv;...fv=(float)dv;fv应该等于original_value吗?任何精度都可能丢失? 最佳答案 SHOULDfvbeequaltooriginal_valueexactly?Anyprecisionmaybelost?是的,如果dv的值在两者之间没有变化。来自C99规范中的Conversion6.3.1.5RealFloatingtypes部分:Whenafloat

c++ - 处理 float 的精度问题

我想知道是否有一种方法可以克服精度问题,这个问题似乎是我的机器内部float表示的结果:为了清楚起见,问题总结为://stris"4.600";atof(str)is4.5999999999999996doublemw=atof(str)//Thevariablesusedinthecolumnscalculationbeloware:////mw=4.5999999999999996//p=0.2//g=0.2//h=1(integer)intcolumns=(int)((mw-(h*11*p))/((h*11*p)+g))+1;在转换为整数类型之前,列计算的结果是1.9999999

c++ - Int to Float to Int转换精度损失

最近,我写了一个小程序,并使用2个不同版本的mingw32(在Windows8上)编译了它。令人惊讶的是,我得到了两个不同的结果。我试着拆解它,但发现没什么特别的。谁能帮帮我?谢谢。exe文件:https://www.dropbox.com/s/69sq1ttjgwv1qm3/asm.7z结果:720720(gcc版本4.5.2),720719(gcc版本4.7.0)编译器标志:-lstdc++-static代码如下:#include#includeusingnamespacestd;intmain(){inta=55440,b=13;a*=pow(b,1);cout程序集输出(4.5

c++ - 限制 std::cout 中 boost::options_description 中默认值的精度

当我构建一个boost::options_description实例时options.add_options()("double_val",value(&config.my_double)->default_value(0.2),"it'sadouble");然后想自动输出可用于我的程序的选项,然后把std::cout默认值0.2显示的精度太高,当我有长变量名时,这会有效地扰乱我的输出:--double_val(=0.20000000000000001)it'sadouble不幸的是,之前对std::cout.precision的调用没有帮助:cout.precision(5);std

c++ - matlab 和 c++ 的精度差异

我正在尝试对用C++和Matlab编写的算法进行等价性测试。该算法包含某种时间循环,运行了1000多次。它具有算术运算和一些数学功能。我手动将初始输入输入到两个平台(如a=1.767、b=6.65等),当我检查这些输入的十六进制表示时,它们是相同的。所以输入没有问题。并通过具有16个十进制数字的文本文件将c++的输出获取到matlab。(我使用“setprecision(32)”语句)但是问题来了;尽管在这两个代码的第614步之后,所有结果都完全相同,但在第615步我得到了关于2.xxx..xxe-19的差异?在这一步之后,错误变得越来越大,在运行结束时它大约是5.xx..xxe-14

c++ - 任意精度小数运算中的 float 与有理数 (C/C++)

由于有两种实现AP小数的方法,一种是模拟double数据类型的存储和行为,只是使用更多字节,另一种是使用现有整数将小数表示为有理数的APA实现,即作为一对整数、分子和分母,这两种方式中的哪一种更有可能在性能方面提供高效的算术?(内存使用确实是次要问题。)我知道现有的C/C++库,其中一些库提供带“float”的小数APA,另一些带有理数(但是,它们都不具有定点APA),当然我可以对一个库进行基准测试依赖于“float”实现而不是利用合理实现的实现,但结果在很大程度上取决于我必须从近十个可用库中随机选择的那些特定库的实现细节。因此,我感兴趣的是两种方法(如果考虑定点APA,则为三种方法)

c++ - 限制浮点精度?

有没有办法将float舍入到2点?例如:3576.7675745342556变为3576.76。 最佳答案 round(x*100)/100.0如果你必须让事物保持float:roundf(x*100)/100.0使用标准库函数的灵活版本:doubleGetFloatPrecision(doublevalue,doubleprecision){return(floor((value*pow(10,precision)+0.5))/pow(10,precision));} 关于c++-限制