Lección 3 · 3 de 20
Números y aritmética · Dart
Opere con números en Dart: +, -, *, la división / que da double, la división entera ~/ y el resto %, redondeos y los operadores += y ++.

Con `${...}` se mete en una cadena el resultado de cualquier expresión, no solo una variable: '34 + 10 = ${eggs + 10}' calcula la suma y escribe 44. Los operadores básicos son los de siempre: +, - y *.
La división `/` da siempre un double, aunque divida dos enteros: 34 / 6 es 5.666666666666667. Cuando lo que interesa es cuántas veces cabe un número en otro, se usa la división entera `~/`, que se queda con la parte entera, y el resto `%`: 34 huevos en cajas de 6 son 5 cajas llenas y sobran 4.
La misma pareja ~/ y % sirve para muchas cosas: 135 ~/ 60 son 2 horas y 135 % 60, 15 minutos. También, como en matemáticas, * va antes que +; los paréntesis cambian el orden, por eso 2 + 3 * 4 da 14 y (2 + 3) * 4 da 20.
Los double tienen métodos para redondear: `toStringAsFixed(2)` da el texto con dos decimales (lo normal para euros), round() redondea al entero más cercano, floor() hacia abajo y ceil() hacia arriba.
Para cambiar una variable a partir de su propio valor, score += 5 es lo mismo que score = score + 5, y `score++` suma uno. Existen igual -=, *= y --.
Código · main.dart
void main() { int eggs = 34; int perBox = 6; // ${...} puts the result of an expression in the text. print('34 + 10 = ${eggs + 10}'); print('34 * 2 = ${eggs * 2}'); // / always gives a double, even with two ints. print('34 / 6 = ${eggs / perBox}'); // ~/ keeps only the whole part; % gives the remainder. int boxes = eggs ~/ perBox; int left = eggs % perBox; print('$boxes full boxes and $left eggs left over'); // The same idea turns minutes into hours and minutes. int minutes = 135; print('$minutes min = ${minutes ~/ 60} h ${minutes % 60} min'); // * goes before +; brackets change the order. print('2 + 3 * 4 = ${2 + 3 * 4}, (2 + 3) * 4 = ${(2 + 3) * 4}'); // Doubles and their rounding methods. double total = 3.75 * 3; print('Total: $total = ${total.toStringAsFixed(2)} euros'); print('round: ${total.round()}, floor: ${total.floor()}, ceil: ${total.ceil()}'); // += and ++ update a variable. int score = 10; score += 5; score++; print('Score: $score');}Salida · dart run main.dart
34 + 10 = 44 34 * 2 = 68 34 / 6 = 5.666666666666667 5 full boxes and 4 eggs left over 135 min = 2 h 15 min 2 + 3 * 4 = 14, (2 + 3) * 4 = 20 Total: 11.25 = 11.25 euros round: 11, floor: 11, ceil: 12 Score: 16
Para recordar
/da siempre undouble.~/da la parte entera de la división;%, el resto.${expresión}mete un cálculo en el texto.toStringAsFixed(2)escribe con dos decimales.+=y++actualizan una variable.
Ejercicio
Calcule cuántas semanas completas y cuántos días sueltos hay en 100 días con ~/ y %, y escriba el resultado en una frase.