Che cosa significa "tra" e "nell'intervallo" nel mondo dei tipi numerici?

1

Given è un numero intero con valore 5. Dato è un intervallo con valori iniziale e finale di 2 e 5. Quindi l'intero 5 ora è compreso nell'intervallo? Cosa dovrebbe restituire un metodo 'InBetween ()' e quale è la rappresentazione corretta di 'between':

int val = 5

if(val >= 2 && val <= 5) // would return true

if(val > 2 && val < 5) // would return false
    
posta Atrotygma 07.08.2013 - 09:55
fonte

3 risposte

5

Non c'è una risposta chiara a questo in quanto "tra" può essere interpretato in molti modi. Direi che inBetween(1, 4) dovrebbe controllare 2, 3 ma sono solo io.

Ci sono altri esempi come, Random.nextInt(1,4) - restituisce valori 1,2,3,4; 2,3 o 2,3,4?

Quindi la maggior parte delle funzioni tende a chiarire che nella documentazione, ad esempio:

public String substring(int beginIndex, int endIndex)

Restituisce una nuova stringa che è una sottostringa di questa stringa. La sottostringa inizia al beginIndex specificato e si estende al carattere all'indice endIndex - 1. Quindi la lunghezza della sottostringa è endIndex-beginIndex. Esempi:

 "hamburger".substring(4, 8) returns "urge"
 "smiles".substring(1, 5) returns "mile"

Parametri:

  beginIndex - the beginning index, inclusive.
  endIndex - the ending index, exclusive.

Se vuoi essere preciso, usa la notazione matematica comune come descritto qui :

Quindi [1, 5) significa l'intervallo 1,2,3,4 (numeri interi) o da 1 a 4,9999 ... se usiamo i float.

    
risposta data 07.08.2013 - 10:14
fonte
3

Per i tipi interi, è prassi normale includere i valori specificati nell'intervallo. Si direbbe che l'intervallo di un singolo dado standard è compreso tra 1 e 6, non 0 e 7.

Per i tipi a virgola mobile, varia in base alle specifiche del particolare progetto. Quando si definiscono le bande adiacenti, è comune includere un valore, ma escludere l'altro.

per es.

double value
if (value >= 0.0 && value < 2.0)
    ...
else if (value >= 2.0 && value < 5.0)
   ...
    
risposta data 07.08.2013 - 10:06
fonte
3

In matematica, ci sono quattro moduli di specifica intervallo (intervallo), mostrati qui con le espressioni C corrispondenti:

(a,b) ((a < x) && (x < b))
[a,b) ((a <= x) && (x < b))
(a,b] ((a < x) && (x <= b))
[a,b] ((a <= x) && (x <= b))

L'idea è che (e) denotano estremità aperte, mentre [e] indicano estremità chiuse.

Aggiunto, basato sul commento di "stakx": una fine aperta di un intervallo è una che non include l'endpoint effettivo. Un fine chiuso è uno che include l'endpoint. Ad esempio, (3,5) è un intervallo aperto, 3 < x < 5. Né 3 né 5 sono inclusi. [4,6) è un intervallo semiaperto: 4 è incluso, 6 non lo è. [5,7] è un intervallo chiuso: sono inclusi sia 5 che 7.

Le diverse forme non sono così interessanti per gli interi, poiché ogni intervallo intero aperto o semiaperto può essere espresso come l'intervallo chiuso equivalente (e viceversa, ovviamente). Diventano utili per razionali e reali.

Dire "in mezzo" è ambiguo. Non dice se i punti finali sono inclusi (vale a dire, l'intervallo è aperto o chiuso su una o entrambe le estremità). Devi specificarlo in modo più chiaro, così puoi dire quale delle quattro forme è intesa come specifica, dati gli endpoint.

    
risposta data 07.08.2013 - 10:19
fonte

Leggi altre domande sui tag