草庐IT

floating-point-conversion

全部标签

c++ - 当 float 变量超出 float 限制时,会发生什么?

我说了两件事:std::numeric_limits::max()+(asmallnumber)给予:std::numeric_limits::max().std::numeric_limits::max()+(alargenumber喜欢:std::numeric_limits::max()/3)提供信息。为什么会有这种差异?1或2是否会导致OVERFLOW并因此导致未定义的行为?编辑:测试代码:1.floatd=std::numeric_limits::max();floatq=d+100;cout2.floatd=std::numeric_limits::max();floatq

C++ 运算符重载 : no known conversion from object to reference?

当我尝试编译以下(g++4.6.3)classA{};A&operator*=(A&a,constA&b){returna;}Aoperator*(constA&a,constA&b){returnA(a)*=b;}intmain(int,char*[]){Aa,b;a=a*b;return0;}我得到了错误/tmp/test.cxx:Infunction‘Aoperator*(constA&,constA&)’:/tmp/test.cxx:14:20:error:nomatchfor‘operator*=’in‘(*&a)*=b’/tmp/test.cxx:14:20:note:ca

c++ - "Narrowing conversion from ' int ' to ' char ' inside { }"交叉编译时的合法值

我有一个C++项目,我在我的机器上使用g++编译(编译到“主机”)和使用交叉编译器的ARM处理器(在我的例子中是arm-cortex_a8-linux-gnueabi-g++)。我正在转换为C++0x/11标准,编译初始化列表时出现错误,我可以在以下代码段中重现该错误:intmain(void){charc[1]={-108};}这个程序看起来是正确的,因为-108是char的合法值。使用g++编译它不会产生以下命令行错误:g++example.cc-std=c++0x但是,当我使用交叉编译器进行编译时,如下所示:arm-cortex_a8-linux-gnueabi-g++examp

c++ - OpenCV,C++ : Distance between two points

对于一个团队项目,我们正在尝试制作一款游戏,只要玩家在镜头前形成一组特定的手势,就会执行功能。为了处理图像,我们使用Open-CV2.3。在图像处理过程中,我们试图找出两点之间的长度。我们已经知道用毕达哥拉斯定律可以很容易地做到这一点,尽管众所周知,毕达哥拉斯定律需要大量的计算机能力,我们希望尽可能少地做到这一点。我们想知道Open-CV或C++标准库中是否存在任何内置函数,可以处理两点之间距离的低资源计算。我们有点的坐标,以像素值表示(当然)。额外信息:以前的经验告诉我们,OpenCV和其他库已经过大量优化。例如,我们尝试使用for循环更改来自相机的实时图像馈送的RGB值,遍历每个像

C++ 游戏开发 : truncating float to int

我正在用C++制作一个游戏,其中有一辆可以在舞台上移动的坦克。坦克有一个角度(float,以度为单位,我假设当他的大炮指向右侧时坦克处于0º),一个速度(float),并且有一个称为“deltaT”(float)的时间常数。当玩家将坦克向前移动时,我使用三角函数和位置随时间的物理方程(我的意思是X(t),我不知道英文怎么说)来计算新坦克的舞台坐标。这是我的问题:由于从float到int的转换,不考虑最接近零的值。所以,在某些角度,坦克看起来是旋转的,但在不同的方向移动。这就是我的代码的作用:1-首先,我通过使用坦克移动的角度来分离其分量X和Y中的速度:floatspeedX=this-

c++ - 将 float 转换为字符串而不会丢失精度

我想在不丢失或添加任何单精度数字的情况下将浮点值存储到字符串中。例如,如果我的浮点值为23.345466467,我希望我的字符串具有str="23.345466467"精确数字。我尝试使用带有%f的CString格式函数。它只给出前6个精度。或者如果我使用%10,如果我的浮点值的精度小于10,它会增加一些垃圾精度。我想在我的字符串中获取精确的浮点值。如何做到这一点? 最佳答案 请参阅http://randomascii.wordpress.com/2012/03/08/float-precisionfrom-zero-to-100-

c++ - boost:algorithm::join() 可以连接一个 float 容器吗?

Boost连接可用于连接字符串容器,可选地由分隔符字符串分隔,如下例所示:Agoodexampleforboost::algorithm::join我的STL技能很弱。我想知道是否有任何方法可以对数字容器(float、double、整数)使用相同的函数?似乎应该有一些一两行来适应其他类型。还有STL的复制功能,这里有一个很好的例子:Howtoprintoutthecontentsofavector?但我不喜欢它在每个元素之后添加分隔符字符串的方式。我只想使用boost。 最佳答案 当然,您可以结合boost::algorithm::

c++ - 持久化 std::chrono time_point 实例

持久化std::chronotime_point实例,然后将它们读回另一个相同类型的实例的正确方法是什么?typedefstd::chrono::time_pointtime_point_t;time_point_ttp=std::chrono::high_resolution_clock::now();serializer.write(tp);...time_point_tanother_tp;serializer.read(another_tp);对写入/读取的调用,假设类型time_point_t的实例可以以某种方式转换为字节表示,然后可以写入或读取磁盘或套接字等。Alf建议的可

c++ - 从 .txt 文件中读取 float

如何从.t​​xt文件中读取float。根据每行开头的名称,我想读取不同数量的坐标。float由“空格”分隔。示例:三角形1.2-2.43.0结果应该是:floatx=1.2/floaty=-2.4/floatz=3.0该文件有更多不同形状的线条,可能更复杂,但我想如果我知道如何做其中一个,我可以自己做其他的。到目前为止我的代码:#include#includeusingnamespacestd;intmain(void){ifstreamsource;//buildaread-Streamsource.open("text.txt",ios_base::in);//opendatai

c++ - 在 L1/L2 中快速合并 4K float 的排序子集

在现代(SSE2+)x86处理器上合并多达4096个32位float的数组的排序子集的快速方法是什么?请假设:整个集合的大小最多为4096个项目子集的大小有待讨论,但我们最初假设在16-256之间通过合并使用的所有数据最好适合L1L1数据缓存大小为32K。16K已经用于数据本身,因此您可以使用16K所有数据都已经在L1中(尽可能高的置信度)-它刚刚被排序操作所有数据都是16字节对齐的我们希望尽量减少分支(原因很明显)可行性的主要标准:比L1LSD基数排序更快。我很想看看是否有人知道根据上述参数执行此操作的合理方法!:) 最佳答案 这