找不到或制定出适用于Dart的解决方案。
我已经尝试过:
1. toStringAsFixed()-此轮
2. double.parse(number.toStringAsFixed())-此轮
3. num-num%0.01-此回合
我在SO上找到了一些解决方案,但是它们要么使用Flutter / Dart上不提供的功能,要么对我不起作用。
任何帮助将不胜感激。
答案 0 :(得分:2)
尝试
double truncateToHundreths(num value) => (value * 100).truncate() / 100;
在某些情况下,您会失去精度,但是这要求您在数字中使用几乎所有53位双精度(当乘以100时会失去精度)。
去低谷字符串是一个巨大的开销,如果可能的话,我会避免的,除非您实际上希望以后将数字转换为字符串。
答案 1 :(得分:1)
(value * 100).truncateToDouble() / 100
示例:
var lat = 29.4562
lat * 100 = 2945.62
2945.62 truncateToDouble()
= 2945
2945/100 = 29.45
答案 2 :(得分:0)
以@Irn漂亮的答案为基础。
下面的函数可让您指定所需的小数位数/小数位数
double truncateToDecimalPlaces(num value, int fractionalDigits) => (value * pow(10,
fractionalDigits)).truncate() / pow(10, fractionalDigits);
示例
truncateToDecimalPlace(4321.92385678, 3) // 4321.923
或者我最喜欢的方式是使用Dart扩展
extension TruncateDoubles on double {
double truncateToDecimalPlaces(int fractionalDigits) => (this * pow(10,
fractionalDigits)).truncate() / pow(10, fractionalDigits);
}
这使您可以像这样在double对象上调用函数
用法
4321.92385678.truncateToDecimalPlace(3); // 4321.923