Ich weiß nicht viel über Ruby.
Aber das ist ein Display Problem. Ich wäre sehr überrascht, wenn die Bibliotheken, die Sie verwenden, keine Möglichkeit haben, eine Zahl zu formatieren, wenn Sie sie in eine Zeichenkette konvertieren.
Es gibt möglicherweise keine Catch-all-Formatierungsoption, die genau das tut, was Sie wollen, aber Sie könnten eine Methode einrichten, die true zurückgibt, wenn float die Float-Repräsentation einer ganzen Zahl ist und andernfalls false. Innerhalb einer Formatierungsroutine, die Sie erstellen (Sie müssen dies also nur einmal tun), ändern Sie einfach die Formatierung basierend darauf, ob dies wahr oder falsch ist.
This erläutert, wie die Anzahl der Ziffern gesteuert wird, die beim Anzeigen einer Zahl nach dem Dezimalzeichen angezeigt werden.
Achten Sie auf die Feinheiten von Gleitkommadarstellungen. Math könnte sagen, die Antwort ist 3, aber Sie können 3.000000000000000000001 erhalten. Ich würde vorschlagen, ein Delta zu verwenden, um zu sehen, ob die Zahl fast eine ganze Zahl ist.
Das ist richtig, aber ich möchte, dass es auf diese Weise * überall * einen Float-Ausgang als String anzeigt. Grundsätzlich möchte ich die Float.to_s-Methode überschreiben oder diese Logik am Ende hängen. –