バージョン番号が通常2.13ではなく「2.1.3」であるのはなぜですか?
数値コンパレータを実行できるので、後者の方が理にかなっているようです。
バージョン番号が整数にエンコードされる場合(Pythonのsys.hexversionなど)と同じ理由で、ゼロが埋め込まれます。
あなたは頻繁に10を超えなければなりません。
多くのプロジェクトはmajor.minor.bugfixスキームを採用しています(例:セマンティックバージョニング)。たぶん、バージョン2.1.9には、パッチを適用する必要のあるセキュリティホールがあります。2.1.10と呼ぶ必要があります(2.2.0と呼ぶことは、新機能とマイナーな非互換性の可能性を意味するため)。たぶん、バージョン3は構文を完全に変更するので、バージョン2に機能を追加し続けたいと思うでしょう。
たぶん、プロジェクトは単純に頻繁にリリースされるため、メジャーバージョンごとに100を超えるマイナー/バグ修正バージョンがあります(kernel.orgには2.6.34.14と3.0.60がリストされています)。
最後に、それは文字列です。もちろん、比較のためにdoubleに解析できますが、多くの言語/ライブラリが「数値」文字列比較をサポートしています(したがって、「Document9」は「Document10」の前にあります)。Apacheのmod_autoindexは、それを「VersionSort」とさえ呼んでいます。
3レベルのバージョン管理スキームは、通常、major.minor.build(またはmajor.minor.revision)を反映します。
3つのレベルでは、レベル間の変更の重要性を減らすことができます。メジャー1、マイナー13とメジャー1、マイナー12のソフトウェアの違いは、メジャー1、マイナー1、ビルド3とメジャー1、マイナー1、ビルド2の違いよりも大幅に大きいはずです。
でバージョン番号を分割できます。各レベルを個別に比較します。
小数点が1つしかない場合でも、数値コンパレータを使用することはできません。
これが例です。
バージョン1.13と1.2を検討してください。明らかに、1.13はそれ以降のバージョンです。しかし、1.2>1.13。