Dart/Flutter中数字前的.符号是什么含义?
Dart/Flutter中数字前置
.符号的语法说明 这种写在数字前的.是Dart浮点数字面量的标准语法糖,没有特殊黑魔法,.59就是0.59的简写。
具体语法规则
- 仅适用于
double类型的字面量:当浮点数的整数部分为0时,可以省略整数位的0,直接以.开头拼接小数部分,编译器会自动补全整数位的0,最终解析为0.xxx的双精度浮点数。 - 两种写法完全等价:写
.59和写0.59在编译后没有任何区别,运行时行为、性能、精度完全一致。 - 存在明确的使用边界:
- 该语法仅对数字字面量生效,不能用在变量、表达式上,类似
.变量名的写法会直接触发语法错误。 - 不能省略小数点后的有效数字,单独写
.、或者0.这类缺省小数部分的写法,都不符合Dart语法规范,会编译报错。
- 该语法仅对数字字面量生效,不能用在变量、表达式上,类似
代码示例
你问题中给出的代码:
double width = .59 * MediaQuery.of(context).size.width;
和下面的写法100%等价:
double width = 0.59 * MediaQuery.of(context).size.width;
合法/非法写法对比
合法写法:
.0→ 等价于0.0.999→ 等价于0.999.1415926→ 等价于0.1415926非法写法:
.:缺失小数部分,语法错误5.:缺失小数部分,Dart不支持省略浮点字面量的小数位,语法错误.round():此处.会被识别为方法调用操作符,而非浮点字面量的组成部分,语法错误
内容的提问来源于stack exchange,提问作者adiv
相关产品推荐
相关产品推荐

