about summary refs log tree commit diff stats
path: root/010vm.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-09-02 14:39:33 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-09-02 14:39:33 -0700
commit3dc3c72c4327f5f7cdeb28b1bb80cc8c67cb2c5b (patch)
treeb26a52e57ff187fbe74d59f83cac605eb7ee468a /010vm.cc
parent6f7e2f575604e79edea0fadb3901a61438f24f0f (diff)
downloadmu-3dc3c72c4327f5f7cdeb28b1bb80cc8c67cb2c5b.tar.gz
3293
Diffstat (limited to '010vm.cc')
-rw-r--r--010vm.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/010vm.cc b/010vm.cc
index 9c57b3bc..cce19e3d 100644
--- a/010vm.cc
+++ b/010vm.cc
@@ -669,24 +669,27 @@ ostream& operator<<(ostream& os, no_scientific x) {
 
 string trim_floating_point(const string& in) {
   if (in.empty()) return "";
+  if (in.find('.') == string::npos) return in;
   int length = SIZE(in);
   while (length > 1) {
     if (in.at(length-1) != '0') break;
     --length;
   }
   if (in.at(length-1) == '.') --length;
+  if (length == 0) return "0";
   return in.substr(0, length);
 }
 
 void test_trim_floating_point() {
   CHECK_EQ(trim_floating_point(""), "");
-  CHECK_EQ(trim_floating_point("000000000"), "0");
+  CHECK_EQ(trim_floating_point(".0"), "0");
   CHECK_EQ(trim_floating_point("1.5000"), "1.5");
   CHECK_EQ(trim_floating_point("1.000001"), "1.000001");
   CHECK_EQ(trim_floating_point("23.000000"), "23");
   CHECK_EQ(trim_floating_point("23.0"), "23");
   CHECK_EQ(trim_floating_point("23."), "23");
   CHECK_EQ(trim_floating_point("23"), "23");
+  CHECK_EQ(trim_floating_point("230"), "230");
   CHECK_EQ(trim_floating_point("3.000000"), "3");
   CHECK_EQ(trim_floating_point("3.0"), "3");
   CHECK_EQ(trim_floating_point("3."), "3");