目录

一、随机数库

二、数学库

三、格式化库

四、小结


仓颉为开发者提供了很多有用的包,比如:随机数库、数学库等。

一、随机数库

通过Random可以生成各种类型的随机数据。

package Study
// 引入随机数包
import std.random.Random

main(): Int64 {
    let bool = Random().nextBool()
    let int = Random().nextInt64()
    let float = Random().nextFloat64()
    let uint = Random().nextUInt64()
    println(bool)
    println(int)
    println(float)
    println(uint)
    return 0
}

生成指定范围的随机整数。

package Study
import std.random.Random

main(): Int64 {
    // 生成[0, 20)的随机数,注意:左闭右开
    let int = Random().nextInt64(20)
    println(int)
    // 生成[10, 60)的随机数,注意:左闭右开
    let num = Random().nextInt64(50) + 10
    println(num)
    return 0
}

可以通过设置随机数种子,使得每次生成的随机数保持一致。比如:第一次运行生成10,第二次运行还是生成10。

package Study
import std.random.Random

main(): Int64 {
    let int = Random(10)
    for(_ in 0..3) {
        println("${int.nextInt8()}")
    }
    return 0
}

二、数学库

通过math包可以实现数学中的很多运算,比如:绝对值、开平方、三角函数\反三角函数、双曲函数\反双曲函数、对数指数运算等。

还提供了MathExtension接口(接口后面会给详细介绍),直接获取圆周率和自然底数。

package Study
// 引入数学包
import std.math.*
// 引入格式化包
import std.convert.Formattable
 
main(): Int64 {
    // 绝对值函数
    println(abs(-12))
    // 开平方 参数类型:浮点类型
    println(sqrt(4.0))
    // Π
    println(Float64.getPI())
    // 正弦函数 参数类型:浮点类型 且 参数是弧度制
    println(sin(30.0 * Float64.getPI() / 180.0))
    // 向上取整 小数保留两位小数
    println(ceil(4.7).format(".2"))
    // 向下取整
    println(floor(6.1).format(".2"))
    // 四舍五入
    println(round(3.4).format(".2"))
    println(round(3.5).format(".2"))
    return 0
}

三、格式化库

以上代码已经使用convert包,格式化输出浮点数了,下列是格式化库的更多用法。

package Study
// 引入格式化包
import std.convert.Formattable
import std.math.*

main(): Int64 {
    // 给正数前面加上“+”号
    println(123.format("+"))
    // 可以将十进制数转成二进制、八进制、十六进制
    println(2.format("B")) // 二进制
    println(3.format("O")) // 八进制
    println(10.format("X")) // 十六进制
    // 科学计数法
    println(Float64.getE().format("E"))
    // 控制浮点数的精度
    println(Float64.getPI().format(".4"))
    return 0
}

四、小结

本章为大家详细的介绍了仓颉编程语言中随机数库、数学库和格式化库的内容,下一章,为大家带来字符串操作库的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐