给定浮点数所在的段
In which segment a given floating point number lies in?
本文关键字:浮点数 更新时间:2023-10-16
设n
(整型)连续段长度为l
(浮点型)。即:
Segment 0 = [0, l)
Segment 1 = [l, 2*l)
Segment 2 = [2*l, 3*l)
...
Segment (n-1) = [(n-1)*l, n*l)
给定一个数字x
(浮点),我想写一个函数
int getSegmentId(double x, double l, int n)
返回x
所在段的id。
我想通过检查x
是否在每个区间内来在O(1)而不是O(log(n))内做到这一点。
我认为这是一个非常普遍和常见的问题,我想有一个解决方案。你能给我点提示吗?
附录
这个问题不是关于这个算法的特定实现,就像前面的问题基于浮点运算一样。我只是想问哪一个是最好的一个好的和健壮的方法来实现这个
我看不出问题,如果每个片段从i*l
开始,在(i+1)*l
结束,那么
int s = static_cast<int>(std::floor(x / l));
int getSegmentId(double x, double l, double n)
{
if(x>=n*l){
//cout>> "Not in any segments! ";
return -1;
else
return (int) x/l ;
}
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 使用浮点数和双精度数的非常小数字的数学
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 返回浮点数的小数位数
- txt 文件中浮点数的最大和最小值
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- 将浮点数转换为无符号字符数组并打印出来
- 如何将时间字符串 (M:SS) 转换为浮点数
- 如何将浮点数(*)[6]转换为浮点**类型?
- C++将浮点数乘以分数
- 如何将浮点数转换为uint8_t?
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何在C++(Arduino)中将浮点数组转换为字节数组
- 在数学上将浮点数四舍五入到 N 位小数
- Cython通过浮点数的最快方式,用于高频控制回路
- 复制 -nan 表示浮点数,AVX __m256 复制后显示 0