LWE: error and float operations
Answering point 3, no.  Rounding a floating point number just leads to a floating point number.  It just has less significant digits.  So they're still represented as a significand and exponent.  This is a widely accepted format these days.  An integer is a totally different storage method that does not lead to accumulated errors.  They're 100% precise.  The uniform distribution problem is exacerbated by the gargantuan 24 orders of magnitude variance in precision of floating point numbers as:-



Further arithmetic operations on a rounded floating point number will still accrue rounding errors in difficult to predict ways.  And different languages have different types of numbers.  For example Java has different types of numbers compared to  Perl, and those are different to C /C++.  This contributes to the difficulty of  native random floating point number generators.  

It's typical to cast a number from one kind to another if you want to change type.