You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何将double数组转换为float数组或int数组

Java double数组转float/int数组实现方案

转float数组

double转float属于窄化基础类型转换,会损失精度,仅适用于对精度要求不高、且确认数值在float取值范围内的场景。

注意:Java原生Stream未提供float类型的基本类型流实现,直接通过流操作只能得到Float[]引用类型数组,如需float[]基本类型数组,优先使用遍历写法。

通用遍历写法(支持所有Java版本):

double[] values= new double[]{123.456,234.123};
float[] floatValues = new float[values.length];
for (int i = 0; i < values.length; i++) {
    floatValues[i] = (float) values[i];
}

转int数组

double转int有两种常用转换策略,可根据业务需求选择:

1. 截断小数位(直接强转)

直接丢弃小数部分,仅保留整数位,例如123.999转换后为123:

  • 通用遍历写法
double[] values= new double[]{123.456,234.123};
int[] intValues = new int[values.length];
for (int i = 0; i < values.length; i++) {
    intValues[i] = (int) values[i];
}
  • Java 8+ 流写法
import java.util.Arrays;

int[] intValues = Arrays.stream(values).mapToInt(v -> (int) v).toArray();

2. 四舍五入取整

通过Math.round()方法做四舍五入后取整,例如123.6转换后为124,123.4转换后为123:

  • 通用遍历写法
double[] values= new double[]{123.456,234.123};
int[] intValues = new int[values.length];
for (int i = 0; i < values.length; i++) {
    // Math.round接收double参数时返回long类型,需强转为int
    intValues[i] = (int) Math.round(values[i]);
}
  • Java 8+ 流写法
import java.util.Arrays;

int[] intValues = Arrays.stream(values).mapToInt(v -> (int) Math.round(v)).toArray();

注意事项

  • 转换前建议做非空校验,避免空指针异常
  • 窄化转换存在溢出风险:如果double值超出目标类型的取值范围,转换后会得到错误值,建议使用前先做范围校验:
    • float取值范围:约 ±3.4028235E38
    • int取值范围:-2147483648 ~ 2147483647

内容的提问来源于stack exchange,提问作者djc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:04