C# 何时判断连续零星的浮点流是否与整数相交?
假设在一个以可变帧速率更新的更新循环中,您收到一个连续的浮动流-通常稳定地增加,除非它改变方向并减少(也稳定地) 如何检测特定循环何时(准确地)命中或越过整数 (实现不必是特定于C的,但这正是我用来实现的……因此,如果有任何C方法可以提供帮助,那也太酷了!) 基本上,您如何使其更具性能:C# 何时判断连续零星的浮点流是否与整数相交?,c#,math,floating-point,integer,C#,Math,Floating Point,Integer,假设在一个以可变帧速率更新的更新循环中,您收到一个连续的浮动流-通常稳定地增加,除非它改变方向并减少(也稳定地) 如何检测特定循环何时(准确地)命中或越过整数 (实现不必是特定于C的,但这正是我用来实现的……因此,如果有任何C方法可以提供帮助,那也太酷了!) 基本上,您如何使其更具性能: int floor0 = Mathf.FloorToInt(lastTH); int ceil0 = Mathf.CeilToInt(lastTH);
int floor0 = Mathf.FloorToInt(lastTH);
int ceil0 = Mathf.CeilToInt(lastTH);
float delta = th - lastTH;
if (delta > 0)
{
// increasing
if (ceil0 > th) Hit();
}
else
{
// decreasing
if (floor0 < th) Hit();
}
lastTH = th;
intfloor0=Mathf.FloorToInt(lasth);
int ceil0=Mathf.ceiloint(lasth);
浮动增量=th-lasth;
如果(增量>0)
{
//增加
如果(ceil0>th)命中();
}
其他的
{
//减少
如果(地板0
一个特定的循环和一个特定的点?考虑到浮点模糊性,这个怎么样?(伪代码…)
var less\u found=false;
var geq_found=假;
while(你的循环){
...
如果(值<阈值)小于_found=真;
如果(值>=阈值)geq_found=true;
...
}
在循环结束时,检查标志
如果值是浮点数,那么我建议阈值也应该是浮点数。如果流刚刚增加,x是上一个值,y是新值,那么当x
无需确定方向,即可将其组合在一起;y处有一个整数(但x≠ y) 或者在x和y之间,如果x
var less_found = false;
var geq_found = false;
while (your_loop) {
...
if (value < threshold) less_found = true;
if (value >= threshold) geq_found = true;
...
}