This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
That seems like a lot of work and a pretty poor design. First, I don't think your versions should be doubles. They should either be ints or strings. Comparing doubles is a pain in the buttocks, and you don't gain anything by using them.
Second, you have a check---() method which doesn't return a boolean value, but instead throws an exception when the check is bad. This seems plain wrong to me (maybe it makes sense in context, but not as shown here).
Third, you start with doing what seems reasonable:
'Is the major version my major version?'
'Is the minor version my minor version?'
But then you degrade into a bunch of magic numbers and redundant comparisons. For example, your major_version is 1.0. Your first comparison is major == major_version. But if that fails, your else if is to check major == 1.0 which is precisely the same comparison. You make that magic-number comparison inside the else if when minor == minor_version fails as well, and it is redundant there as well, since the major == major_version was already true.
I think you have to go back and think about what cases are supposed to work and what cases aren't. Start from scratch. Here are a couple of examples (remember I don't know any of your requirements, so these are naive - but show that simpler is better, and named constants are more expressive).
Of course, I would just keep an incrementing counter for versions and let the major/minor stuff be left for display purposes.