У меня есть следующее число в десятичном формате
double x = 2.888888888888889;
, но в результате я не смог получить 2.9
. Как это делается? Есть ли способ сделать это? что приближается к 1 десятичной больше, как правила математики? если это 3,5, то результат 3,6?
@Franknike Используйте round(), но у меня это не работает, должен быть более точный результат.
Ответ ниже решит это
Есть как минимум два способа, проверьте это:
void main() {
double number = 2.888888888;
double roundedByString = double.parse(number.toStringAsFixed(1));
print(roundedByString); // prints 2.9
double roundedByTenthInt = (number * 10).round() / 10;
print(roundedByTenthInt); // prints 2.9
}
Вы тот ответ, который я так искал, вы меня спасли, спасибо!!
Имейте в виду, что это приведет к установке roundedByString
и roundedByTenthInt
значения double
ближайший на 2,9 (что будет 2,899999999999999911182158029987476766109466552734375). По своей природе вы не можете точно округлить большинство чисел с плавающей запятой бинарный до точности десятичная дробь. См. также stackoverflow.com/a/68980598
double.round()
В математике, если 3,5, то 4,0 при приближении, по крайней мере, так меня учили. Проверить круглый