diff --git a/inc/ini.h b/inc/ini.h
index ee88575..dfcee82 100644
--- a/inc/ini.h
+++ b/inc/ini.h
@@ -15,6 +15,7 @@ void ini_create(INIFILE* ini, char* filename);
 DWORD ini_get_string(INIFILE* ini, LPCSTR section, LPCSTR key, LPCSTR def, LPSTR buf, DWORD size);
 BOOL ini_get_bool(INIFILE* ini, LPCSTR section, LPCSTR key, BOOL def);
 int ini_get_int(INIFILE* ini, LPCSTR section, LPCSTR key, int def);
+float ini_get_float(INIFILE* ini, LPCSTR section, LPCSTR key, float def);
 void ini_free(INIFILE* ini);
 
 #endif
diff --git a/src/ini.c b/src/ini.c
index 593dbba..b71f275 100644
--- a/src/ini.c
+++ b/src/ini.c
@@ -155,6 +155,17 @@ int ini_get_int(INIFILE* ini, LPCSTR section, LPCSTR key, int def)
     }
 }
 
+float ini_get_float(INIFILE* ini, LPCSTR section, LPCSTR key, float def)
+{
+    char def_str[32];
+    _snprintf(def_str, sizeof(def_str) - 1, "%f", def);
+
+    char value[32];
+    ini_get_string(ini, section, key, def_str, value, sizeof(value));
+
+    return (float)atof(value);
+}
+
 void ini_free(INIFILE* ini)
 {
     if (!ini)