Bots de conversa de Telegram amb Google Apps Script

Bots de conversa Exemples Dades pràctiques   Recursos CITCEA
Google Apps Script Projectes Interacció   Inici

Variables que contenen nombres

A Google Apps Script les variables no tenen tipus i, per tant, una variable qualsevol pot guardar, entre altres coses, nombres o text. A vegades, però, ens podem trobar que una dada que nosaltres pensem que és un valor numèric resulti que és tractada com si fos text. Anem a veure algun exemple.

Agafem la següent funció:

function prova(){
  var a = 4;
  var b = a + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem obtindrem, com esperem, el resultat:

b = 5

Ara provem aquesta nova versió de la funció:

function prova(){
  var a = "4";
  var b = a + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem, obtindrem el resultat:

b = 41

Ara el contingut de la variable a s'ha tractat com a text i l'operador + aplicat no ha estat el de suma sinó el de concatenació de text. Per això el nombre 1 s'ha afegit al final en lloc de sumar-se.

A primer cop d'ull, podem pensar que només es tracta de vigilar que els nombres que posem en el programa estiguin en format numèric, és a dir sense cometes. Però quan el contingut de la variable prové d'una comanda de Telegram o s'ha llegit d'un full de càlcul també és molt probable que estigui en format de text. Ens cal, doncs, poder forçar que el contingut de la variable sigui interpretat com a numèric.

Una forma molt senzilla de fer que el contingut d'una variable que conté nombres en format text sigui interpretat com a numèric és posant-li un signe + al davant però de forma que no impliqui una suma ni una concatenació. Per exemple, mirem la següent funció:

function prova(){
  var a = "4";
  var b = +a + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem, obtindrem el resultat:

b = 5

A la línia marcada en color, el signe + no pot ser una suma ni una concatenació (no té res al davant) i, per tant, força a convertir el valor de la variable a a numèric. A aquest valor se li suma l'1 i s'obté el resultat esperat.

També hi ha la funció Number, que permet convertir el text al seu valor numèric. Per exemple:

function prova(){
  var a = "4";
  var b = Number(a) + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem, obtindrem el resultat:

b = 5

Una altra forma de convertir-ho a valor numèric són les funcions parseInt i parseFloat, que ens permeten especificar si volem que el nombre sigui, respectivament, enter o real en coma flotant.

Provem aquesta nova versió de la funció:

function prova(){
  var a = "4";
  var b = parseInt(a) + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem, obtindrem el resultat:

b = 5

Si posem un valor amb decimals:

function prova(){
  var a = "4.7";
  var b = parseInt(a) + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem, obtindrem el resultat:

b = 5

Fixem-nos que el resultat no s'arrodoneix sinó que s'eliminen els decimals.

En canvi, si fem servir parseFloat:

function prova(){
  var a = "4.7";
  var b = parseFloat(a) + 1;
  var resposta = "b = " + b;
  sendText(id, resposta);
}

Si l'executem, obtindrem el resultat:

b = 5.7

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.