DMarlon Studio

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 ++.

Dart · Números y aritmética en DMarlon Studio: el código del ejemplo y su salida en la terminal

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 un double.
  • ~/ 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.