double 转 int

「double 转 int」指的是在编程中把双精度浮点数类型(double)转换为整数类型(int)的操作,常见于 C、C++、Java、C# 等语言。它和数值类型转换、精度丢失以及取整规则密切相关。
基本含义与常见用途
double 能表示带小数的数值,int 只能表示整数,因此转换时必然要处理小数部分。多数语言采用“向零截断”的方式:正数直接去掉小数,负数也向零方向取整,例如 3.9 变成 3,-3.9 变成 -3。这种转换常用于把计算结果取整、把浮点坐标转成像素位置、或把界面上的小数输入整理成整数索引。
常见问题
最典型的问题是精度丢失和溢出。double 能表示的范围远大于 int,如果数值超出 int 的取值范围,转换结果可能变得不可预期,甚至得到一个完全无关的数。此外,double 本身存在二进制表示误差,像 0.1 这类数并不能精确存储,转换前若已累积误差,截断结果可能比预期少 1。还有一点容易被忽略:不同语言对“四舍五入”和“截断”的处理并不一致,直接强转通常不是四舍五入。
怎么判断与怎么选
如果业务要求“只保留整数部分”,直接用强制转换即可;如果要求四舍五入,应先用数学函数处理再转换。转换前最好判断数值是否落在 int 的安全范围内,避免溢出。对精度敏感的场景,可以先确认 double 的实际值,再决定截断还是舍入。简单说:要截断用强转,要舍入先运算,要安全先判范围。