Make string_to_num work with floats.

It basically amounts to a name change, because the functionality
was already there. There's also a new test for it.

Change-Id: I982ed9de87862bd65b29a81be858b45040bc9d45
diff --git a/aos/common/util/string_to_num.h b/aos/common/util/string_to_num.h
index c6dcb30..d99ed91 100644
--- a/aos/common/util/string_to_num.h
+++ b/aos/common/util/string_to_num.h
@@ -7,11 +7,11 @@
 namespace aos {
 namespace util {
 
-// Converts a string into a specified integral type. If it can't be converted
+// Converts a string into a specified numeric type. If it can't be converted
 // completely or at all, or if the converted number would overflow the
-// specified integral type, it returns false.
+// specified type, it returns false.
 template<typename T>
-inline bool StringToInteger(const ::std::string &input, T *out_num) {
+inline bool StringToNumber(const ::std::string &input, T *out_num) {
   ::std::istringstream stream(input);
   stream >> *out_num;
 
diff --git a/aos/common/util/string_to_num_test.cc b/aos/common/util/string_to_num_test.cc
index e1ee1cb..705de42 100644
--- a/aos/common/util/string_to_num_test.cc
+++ b/aos/common/util/string_to_num_test.cc
@@ -12,30 +12,36 @@
 
 TEST(StringToNumTest, CorrectNumber) {
   int result;
-  ASSERT_TRUE(StringToInteger<int>(::std::string("42"), &result));
+  ASSERT_TRUE(StringToNumber<int>(::std::string("42"), &result));
   EXPECT_EQ(result, 42);
 }
 
 TEST(StringToNumTest, NegativeTest) {
   int result;
-  ASSERT_TRUE(StringToInteger<int>(::std::string("-42"), &result));
+  ASSERT_TRUE(StringToNumber<int>(::std::string("-42"), &result));
   EXPECT_EQ(result, -42);
 }
 
 TEST(StringToNumTest, NonNumber) {
   int result;
-  ASSERT_FALSE(StringToInteger<int>(::std::string("Daniel"), &result));
+  ASSERT_FALSE(StringToNumber<int>(::std::string("Daniel"), &result));
 }
 
 TEST(StringToNumTest, NumberWithText) {
   int result;
-  ASSERT_FALSE(StringToInteger<int>(::std::string("42Daniel"), &result));
+  ASSERT_FALSE(StringToNumber<int>(::std::string("42Daniel"), &result));
 }
 
 TEST(StringToNumTest, OverflowTest) {
   uint32_t result;
   // 2 << 32 should overflow.
-  ASSERT_FALSE(StringToInteger<uint32_t>(::std::string("4294967296"), &result));
+  ASSERT_FALSE(StringToNumber<uint32_t>(::std::string("4294967296"), &result));
+}
+
+TEST(StringToNumTest, FloatingPointTest) {
+  double result;
+  ASSERT_TRUE(StringToNumber<double>(::std::string("3.1415927")));
+  EXPECT_EQ(result, 3.1415927);
 }
 
 }  // testing
diff --git a/aos/linux_code/logging/log_displayer.cc b/aos/linux_code/logging/log_displayer.cc
index 7da0dc4..b2f4d45 100644
--- a/aos/linux_code/logging/log_displayer.cc
+++ b/aos/linux_code/logging/log_displayer.cc
@@ -154,7 +154,7 @@
         }
         break;
       case 'p':
-        if (!::aos::util::StringToInteger(::std::string(optarg), &source_pid)) {
+        if (!::aos::util::StringToNumber(::std::string(optarg), &source_pid)) {
           fprintf(stderr, "ERROR: -p expects a number, not '%s'.\n", optarg);
           exit(EXIT_FAILURE);
         }
@@ -177,7 +177,7 @@
         skip_to_end = true;
         break;
       case 'm':
-        if (!::aos::util::StringToInteger(::std::string(optarg), &display_max)) {
+        if (!::aos::util::StringToNumber(::std::string(optarg), &display_max)) {
           fprintf(stderr, "ERROR: -m expects a number, not '%s'.\n", optarg);
           exit(EXIT_FAILURE);
         }