asc.language.basic.scalar_cast

asc.language.basic.scalar_cast(value_in: float, dtype: Type[T], round_mode: RoundMode) T

对标量的数据类型进行转换。

对应的Ascend C函数原型

template <typename T, typename U, RoundMode roundMode>
__aicore__ inline U ScalarCast(T valueIn);

参数说明

  • value_in:被转换数据类型的标量。

  • dtypeL: 目标数据类型,由Python前端指定。 - 支持:asc.half、asc.float16、asc.int32。

  • round_mode: 精度转换处理模式,类型为RoundMode枚举值。 - asc.RoundMode.CAST_NONE:在转换有精度损失时表示CAST_RINT模式,不涉及精度损失时表示不取整。 - asc.RoundMode.CAST_RINT:rint,四舍六入五成双取整。 - asc.RoundMode.CAST_FLOOR:floor,向负无穷取整。 - asc.RoundMode.CAST_CEIL:ceil,向正无穷取整。 - asc.RoundMode.CAST_ROUND:round,四舍五入取整。 - asc.RoundMode.CAST_ODD:Von Neumann rounding,最近邻奇数舍入。

    • 对应支持关系

      • float -> half(f322f16):asc.RoundMode.CAST_ODD

      • float -> int32(f322s32):asc.RoundMode.CAST_ROUND、asc.RoundMode.CAST_CEIL、asc.RoundMode.CAST_FLOOR、asc.RoundMode.CAST_RINT

    • ScalarCast的精度转换规则与Cast保持一致

返回值说明

返回值为转换后的标量,类型与dtype一致。

调用示例

value_in = 2.5
dtype = asc.int32
round_mode = asc.RoundMode.CAST_ROUND
value_out = asc.scalar_cast(value_in, dtype, round_mode)