Divisez par Ruby! Pourquoi est-ce 0?

Soigneusement dès le début les écueils de la division (division). Prenons Ruby comme exemple. L'introduction et l'explication sont très longues. La conclusion est [ici](utilisez la méthode #to_f).

Soyez prudent lorsque le nombre de réponses est petit

Par exemple, supposons que vous vouliez faire "80 ÷ 100". La réponse attendue est "0,8" (ou un nombre égal) ...

80 / 100
=> 0

0 sera retourné. Pourquoi?

Qu'est-ce qu'un programme?

En effet, le calcul précédent est considéré comme un "calcul entre entiers". Je pense que "c'est entre des entiers", mais le calcul des entiers et des entiers ne renvoie que des entiers.

Par exemple, "101 ÷ 100" est également le même. J'aimerais que vous renvoyiez "1.01" comme réponse, mais ce sera comme suit.

101 / 100
=> 1

Comment calculez-vous?

Pour obtenir la réponse que vous attendez, vous devez inclure quelques chiffres dans votre calcul. Vous devez dire: "Calculez comme une minorité, pas comme un entier!" Il faut être conscient que ceux-ci sont différents dans le programme, même pour des calculs auxquels vous ne portez pas une attention particulière au quotidien.

Par exemple, vous pouvez dire qu'un petit nombre de chiffres sont dans le calcul en écrivant:

80.0 / 100
=> 0.8

Tu peux écrire

80 / 100.0
=> 0.8

Vous pouvez écrire, bien sûr

80.0 / 100.0
=> 0.8

Mais c'est bien.

Je vois. Mais que faire si c'est une variable? J'aimerais connaître la méthode suivante pour gérer une telle situation.

Utilisez la méthode to_f

La méthode to_f peut être utilisée lorsque vous voulez la traiter comme une" minorité "dans Ruby. "F" signifie "f" de float, "nombre à virgule flottante". (C'est aussi un concept unique, mais il existe de nombreux articles auxquels vous pouvez vous référer, donc je vais vous le donner.) Maintenant, comment l'utiliser, ajoutez simplement to_f après la valeur numérique (la variable est OK).

80.to_f / 100
=> 0.8

Tu peux écrire

80 / 100.to_f
=> 0.8

Vous pouvez écrire, bien sûr

80.to_f / 100.to_f
=> 0.8

Mais c'est bien.

Avec cette méthode, il est normal de recevoir des variables.

n = 80

n.to_f / 100
=> 0.8

Vous avez les résultats que vous attendiez.

Recommended Posts

Divisez par Ruby! Pourquoi est-ce 0?
Pourquoi les écoles apprennent Ruby
Pourquoi preventDefault est nécessaire
[Résumé] Pourquoi le rendre orienté objet
Qu'est-ce qu'un module Ruby?
Il a été donné par render
Pourquoi Kotlin est si pratique
[Ruby] À quoi sert «!!»?
[Ruby] Qu'est-ce qu'une instance?
[Ruby] Pourquoi require'json'autorisera to_json
[Pour les débutants] On dit que le rubis est rubis, mais qu'en est-il?
[Rails] Pourquoi est-il rendu si la sauvegarde réussit et que redirect_to échoue?