草庐IT

floor-division

全部标签

c++ - "floor"是否可能由于浮点舍入错误而返回不准确的结果?

我知道float通常会包含舍入误差。当您取float(或double)的底限或上限以将其转换为整数时,结果值是否准确,或者“底限”值是否仍然是近似值?基本上,像floor(3.14159265)这样的东西是否有可能返回一个本质上是2.999999的值,当您尝试将其转换为int时,它会转换为2? 最佳答案 Isitpossibleforsomethinglikefloor(3.14159265)toreturnavaluewhichisessentially2.999999?floor()函数返回一个精确整数的浮点值。所以你的问题的前

c++ - Floor vs int 转换差异

这个问题在这里已经有了答案:Isfloatingpointmathbroken?(31个答案)关闭6年前。我有一个奇怪的问题。这是我的部分代码:inttemp=1100;intfoo=floor(0.03*temp);intfoo1=0.03*temp;if(foo-foo1){cout如果temp的3%=整数,则foo与foo1相差1。例如:1100*0.03=33.foo=33foo1=32.另外,如果我这样写:intfoo=floor(0.03*1100);intfoo1=0.03*1100;不存在这样的问题。为什么?

c++ - (long long)x 与 C++ 中的 (long long)floor(x) 相同吗?

假设我有一个double数据类型,名为“x”的变量。是否有必要将double转换为longlong数据类型与转换为longlongfloor(x)得到相同的结果。 最佳答案 不,这不一样。强制转换截断(向零舍入),floor函数向下舍入。演示:http://ideone.com/k8JuA9#include#includeintmain(){doublex=-1.4;std::cout 关于c++-(longlong)x与C++中的(longlong)floor(x)相同吗?,我们在St

c++ - 具有相同值但不同类型的参数的 std::floor 函数的不同值

考虑以下几点:#include#includeintmain(){usingstd::cout;usingstd::endl;constlongdoublebe2=std::log(2);cout输出3,23,3为什么输出不同?我在这里缺少什么?这里还有键盘链接:http://codepad.org/baLtYrmy我在linux上使用gcc4.5,如果这很重要的话。 最佳答案 当我添加这个时:cout.precision(40);我得到这个输出:2.999999999999999839754918906642444653698,2

c++ - Visual Studio 不允许我使用 sqrt 或 floor,对重载函数的调用不明确

我调用longlonga=sqrt(n/2);a和n都是longlong但它不会让我编译因为它说我使用sqrt()是一个模棱两可的调用。我根本看不出它在这里可能是模棱两可的。我该如何解决这个问题?我对floor()也有同样的问题。我的包括#include"stdafx.h"#include#includeusingnamespacestd; 最佳答案 sqrt()有几个重载和floor(),对sqrt(longlong)的调用没有“最佳匹配”根据重载决议规则。只需将参数转换为适当的类型——即,longlonga=sqrt(stati

php - 如何抑制 "Division by zero"错误并将整个应用程序的结果设置为 null?

如何抑制“被零除”错误并将结果设置为null对于整个应用程序?说“针对整个应用程序”,我的意思是它不是针对单个表达式。相反,每当发生“被零除”错误时,结果会自动设置为null,并且不会抛出任何错误。 最佳答案 这应该可以解决问题。$a=@(1/0);if(false===$a){$a=null;}var_dump($a);输出NULL在这里查看引用文献errorcontrols.编辑functiondivision($a,$b){$c=@(a/b);if($b===0){$c=null;}return$c;}在任何地方用函数调用di

android - 我停留在 android 方法 FloatMath.floor API 上没有问题

方法:@OverrideprotectedbooleanisReadyForPullEnd(){@SuppressWarnings("deprecation")floatexactContentHeight=FloatMath.floor(mRefreshableView.getContentHeight()*mRefreshableView.getScale());returnmRefreshableView.getScrollY()>=(exactContentHeight-mRefreshableView.getHeight());}输出:错误:(116,39)错误:找不到符号方

ffmpeg将图片转换为视频报错:width not divisible by 2(原因:H.264使用4x4和16x16的块进行编码,输入图像宽度或者高度需要能被2整除)图片转视频

文章目录用ffmpeg将图片转换为视频报错了原因我把图片长宽调整为能被2整除的大小,果然可以了用ffmpeg将图片转换为视频报错了我有一张图片,需要把它转换为一个mp4h.264编码视频,我用ffmpeg转换,但是过程中报错了:ffmpeg-loop1-iLena_Soderberg.jpg-c:vlibx264-t10output.mp4提示:[libx264@0x5573424b8980]widthnotdivisibleby2(497x373)Errorinitializingoutputstream0:0--Errorwhileopeningencoderforoutputstream

c++ - 避免调用 floor()

我正在编写一段代码,我需要处理不一定在0到1范围内的uvs(2D纹理坐标)。例如,有时我会得到一个u分量为1.2的uv。为了处理这个问题,我正在实现一个包装,它通过执行以下操作导致平铺:u-=floor(u)v-=floor(v)这样做会使1.2变为0.2,这是期望的结果。它还处理负面情况,例如-0.4变为0.6。但是,这些对floor的调用相当慢。我已经使用IntelVTune分析了我的应用程序,我花费了大量的周期来完成这个底层操作。在对这个问题做了一些背景阅读后,我想出了以下函数,它速度更快但仍有很多不足之处(我仍然会受到类型转换的惩罚,等等)。intinlinefasterflo

MySQL FLOOR 函数意外结果

CREATETABLEtable_name(col_adouble(10,2),col_bdouble(10,2),col_cdouble(10,2));INSERTINTOtable_nameVALUES(36.3,0,6.3);查询SELECTFLOOR(36.3-0-6.3),FLOOR(col_a-col_b-col_c)AScalc,col_a,col_b,col_cFROMtable_nameLIMIT1;结果第一个选择的值=>FLOOR(36.3-0-6.3)结果为30。第二个选择值=>FLOOR(col_a-col_b-col_c)等于FLOOR(36.3-0-6.3)