简介

dart也可以进行数学运算,dart为数学爱好者专门创建了一个dart:math包来处理数学方面的各种操作。dart:math包提供了正弦,余弦,最大值,最小值和随机数等操作。

一起来看看dart:math包都能做什么吧。

dart:math包的构成

如果你去查看dart:math的源代码,你会发现,dart:math包其实很简单,它里面只有4个文件。分别是:

math.dart,random.dart,point.dart和rectangle.dart。

后面两个文件,主要跟二维坐标有关,这里不详细说明。

我们常用到的就是前面两个文件,math和random。

math

math中定义了我们在数学运算中常用到的一些常量,如:

const double e = 2.718281828459045;

const double ln10 = 2.302585092994046;

const double ln2 = 0.6931471805599453;

const double log2e = 1.4426950408889634;

const double log10e = 0.4342944819032518;

const double pi = 3.1415926535897932;

const double sqrt1_2 = 0.7071067811865476;

const double sqrt2 = 1.4142135623730951;

计算最大值和最小值:

assert(max(18, 20) == 20);
assert(min(18, 20) == 18);

使用三角函数:

assert(cos(pi) == -1.0);

var degrees = 30;
var radians = degrees * (pi / 180); var sinOf30degrees = sin(radians); assert((sinOf30degrees - 0.5).abs() < 0.01);

Random

dart中的random包提供了一些比较有用的生成随机数的方法,先看下Random类的定义:

abstract class Random {

  external factory Random([int? seed]);

  external factory Random.secure();

  int nextInt(int max);

  double nextDouble();

  bool nextBool();
}

我们可以使用Random中提供的nextInt,nextDouble和nextBool来生成对应的随机数:

var random = Random();
random.nextDouble();
random.nextInt(10);
random.nextBool();

默认情况下,Random生成的是伪随机数,要想生成更加安全的随机数,比如密码学意义上的随机数,Random还有一个更加安全的实现Random.secure()。

总结

以上就是dart中math库的介绍。

本文已收录于 http://www.flydean.com/18-dart-math/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

最新文章

  1. awk使用shell变量
  2. slave IO流程之一:mysql登陆过程(mysql_real_connect)
  3. springmvc 用拦截器+token防止重复提交
  4. Android -- ViewDragHelper
  5. CentOS 命令【备忘】
  6. Alpha版本项目展示
  7. Vim tips
  8. golang的并发
  9. 学习笔记_Java_day13_三层的HelloWorld程序(15)--不错,整体三层架构学习
  10. C++小知识之Vector用法
  11. JavaScript不一样的语法
  12. VS项目如何添加到svn
  13. thymeleaf模板引擎shiro集成框架
  14. Maven的安装步骤
  15. day 12 装饰器
  16. Swoole addProcess的使用
  17. text字段增加处理
  18. 唯品会RPC服务框架与容器化演进--转
  19. ffmpeg 2.3版本号, 关于ffplay音视频同步的分析
  20. Jni的Jclass JmethodID JfrieldID的差异

热门文章

  1. 第四代富士X100F操作学习
  2. 改善深层神经网络-week3编程题(Tensorflow 实现手势识别 )
  3. Beta阶段第五次会议
  4. MVC中单选按钮的实现
  5. X264编码测试验证
  6. PHP笔记1__基础知识
  7. linux 内核源代码情景分析——Intel X86 CPU 系列的寻址方式
  8. mysql查看数据库大小
  9. c++ IO库
  10. k8s入坑之路(2)kubernetes架构详解