Has*_*sen 11 integer dart flutter
如何检查值是整数(整数)还是包含小数?在 Javascript 中我们有,isInteger但我在 Dart 中找不到等价物。
我们似乎有检查isEven,isOdd,isFinite,isInfinite,isNaN和isNegative,但没有isInteger?
lrn*_*lrn 19
飞镖数字(类型num)是整数(类型int)或双精度(类型double)。
检查数字是否为 很容易int,只需执行value is int。
稍微困难一点的任务是检查一个double值是否有整数值,或者没有小数部分。没有简单的函数来回答这个问题,但你可以做value == value.roundToDouble(). 这将从double值中删除任何小数部分并将其与原始值进行比较。如果它们相同,则没有小数部分。
因此,辅助函数可以是:
bool isInteger(num value) =>
value is int || value == value.roundToDouble();
Run Code Online (Sandbox Code Playgroud)
我使用roundToDouble()而不仅仅是round()因为后者也会将值转换为整数,这可能会为较大的 double 值提供不同的值。
使用模运算符 %:
bool isInteger(num value) => (value % 1) == 0;
Run Code Online (Sandbox Code Playgroud)
与扩展方法相同:
extension NumExtensions on num {
bool get isInt => (this % 1) == 0;
}
Run Code Online (Sandbox Code Playgroud)
用法:
double d = 2.6;
double d2 = 2.0;
int i = 2;
print(d.isInt); // returns false
print(d2.isInt); // returns true
print(i.isInt); // returns true
Run Code Online (Sandbox Code Playgroud)
void main() {
int a = 10;
print(a is int); // Prints true
}
Run Code Online (Sandbox Code Playgroud)
或者
void main() {
dynamic a = 10;
print(a is int ? a/10 :"Not an int"); // Prints 1
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14527 次 |
| 最近记录: |