Add additional check on float precision after parsing, only compile the
value when precision is not lost.

Bug: b/69347762
Test: Verified affected atests pass
Change-Id: I8e4fcd420a924f0e949bfd3a8aae23d1e7d582b1
diff --git a/tools/aapt2/ResourceValues.cpp b/tools/aapt2/ResourceValues.cpp
index a5754e0..728e35a 100644
--- a/tools/aapt2/ResourceValues.cpp
+++ b/tools/aapt2/ResourceValues.cpp
@@ -22,12 +22,12 @@
 #include <set>
 #include <sstream>
 
-#include "android-base/stringprintf.h"
-#include "androidfw/ResourceTypes.h"
-
 #include "Resource.h"
 #include "ResourceUtils.h"
 #include "ValueVisitor.h"
+#include "android-base/stringprintf.h"
+#include "androidfw/ResourceTypes.h"
+#include "io/StringStream.h"
 #include "util/Util.h"
 
 using ::aapt::text::Printer;
@@ -487,6 +487,15 @@
   }
 }
 
+std::string BinaryPrimitive::toPrettyString() const {
+  std::string str;
+  io::StringOutputStream out(&str);
+  text::Printer printer(&out);
+  this->PrettyPrint(&printer);
+  out.Flush();
+  return str;
+}
+
 Attribute::Attribute(uint32_t t)
     : type_mask(t),
       min_int(std::numeric_limits<int32_t>::min()),