相关疑难解决方法(0)

C++十进制数据类型

有没有办法使用十进制数据类型,比如一种方式decimal32,decimal64或者decimal128在我的C++程序?

c++ floating-point double types decimal

36
推荐指数
2
解决办法
5万
查看次数

给定数字在哪个部分?

假设有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) 
Run Code Online (Sandbox Code Playgroud)

给定一个数字x(浮点数)我想确定它所在的段的id.

我的第一个想法如下:

int segmentId = (int) floor(x/l);
Run Code Online (Sandbox Code Playgroud)

无论如何,这有时不起作用.例如,考虑一下

double l = 1.1;
double x = 5.5;
int segmentId = (int) floor(x/l); //returns 5


double l = 1.1;
double x = 6.6;
int segmentId = (int) floor(x/l); //returns 5!!!
Run Code Online (Sandbox Code Playgroud)

当然,由于有限的算术,这不能很好地工作.为了实现强大的实现,可能需要一些额外的检查,但我真的不知道如何继续进行.

问题是:你如何解决问题"给定数字在哪个部分?"

c++ algorithm floating-point

3
推荐指数
1
解决办法
150
查看次数

标签 统计

c++ ×2

floating-point ×2

algorithm ×1

decimal ×1

double ×1

types ×1