diff --git a/include/object/outputstream.h b/include/object/outputstream.h
index 4a37977d164ed5a65d1fb2d3ac5e5201ee7566bb..70ebece512830b5c565ed7caefda7b5b683ee678 100644
--- a/include/object/outputstream.h
+++ b/include/object/outputstream.h
@@ -35,6 +35,8 @@ class OutputStream {
 	OutputStream & operator<<(long long number);
 	OutputStream & operator<<(void *pointer);
 	OutputStream & operator<<(const char *text);
+	OutputStream & operator<<(float number);
+	OutputStream & operator<<(double number);
 	OutputStream & operator<<(OutputStream & (*fun) (OutputStream &));
 
 	void setBase(uint8_t b);
diff --git a/src/os/object/outputstream.cc b/src/os/object/outputstream.cc
index 31b0da45bb0f0d8919b2b19707af79d558d14f0b..f257fa5b90e2e3ddbe7a3d18c301d5ce9e78d6ac 100644
--- a/src/os/object/outputstream.cc
+++ b/src/os/object/outputstream.cc
@@ -98,6 +98,18 @@ OutputStream & OutputStream::operator<<(long long number)
 	return *this;
 }
 
+OutputStream & OutputStream::operator<<(double number)
+{
+	*this << (float)number;
+	return *this;
+}
+
+OutputStream & OutputStream::operator<<(float number)
+{
+	this->printf_float(number);
+	return *this;
+}
+
 OutputStream & OutputStream::operator<<(void *pointer)
 {
 	unsigned short temp_base = base;