F#中如何用简写语法创建带浮点步长的数组?
在F#中创建带浮点步长的数组
好问题!F#其实完全支持带浮点步长的范围简写语法,不用非得写循环来实现~
你熟悉的整数范围[1..10]是省略步长的简化写法,而完整的范围表达式语法是[起始值 .. 步长 .. 结束值],这个语法对浮点数同样适用。
比如你需要的步长为0.5、包含{-2.0, -1.5, -1.0, -0.5, 0, 0.5, 1.0, 1.5, 2}的数组,直接这么写就行:
let floatStepArray = [-2.0 .. 0.5 .. 2.0]
执行这段代码后,floatStepArray就是你想要的浮点数组。
小提醒
- 要确保起始值、步长、结束值都是浮点类型(比如加上
.0后缀),不然编译器会默认按整数处理,导致语法报错。 - 由于浮点数的精度特性,当步长是类似0.1这种无法精确二进制表示的数值时,可能会出现预期外的末尾元素差异。如果对精度要求极高,可以改用
decimal类型:
let preciseDecimalArray = [-2.0m .. 0.5m .. 2.0m]
当然,如果需要更复杂的生成逻辑,for或while循环依然是可行的选项,但这种范围简写在大多数常规场景下已经足够简洁高效了。
内容的提问来源于stack exchange,提问作者Ciaran_McCarthy
相关产品推荐
相关产品推荐

