From 647f53cadda92ee7b8a331e5f44bf1afe84f15ab Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Fri, 10 Nov 2023 00:15:40 +0800 Subject: [PATCH] fix: error when output float --- include/utils.h | 2 +- src/names.cpp | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/utils.h b/include/utils.h index ec19f01..740b4fc 100644 --- a/include/utils.h +++ b/include/utils.h @@ -89,7 +89,7 @@ class FucntionContainer { public: void AddFunction(const std::string &name, const FunctionItem &item); std::any CallFunction(const std::string &name, - const std::vector &args, + std::vector &args, VariableContainer &Varables); }; std::any DeQuate(std::any val, VariableContainer &Variables); diff --git a/src/names.cpp b/src/names.cpp index bfdfcbe..244b44d 100644 --- a/src/names.cpp +++ b/src/names.cpp @@ -46,16 +46,20 @@ void FucntionContainer::AddFunction(const std::string &name, FunctionIndex[name] = item; } -std::any FucntionContainer::CallFunction( - const std::string &name, const std::vector &args, - VariableContainer &Variables) { +std::any FucntionContainer::CallFunction(const std::string &name, + std::vector &args, + VariableContainer &Variables) { if (name == "print") { bool is_first = true; for (int i = 0; i < args.size(); i++) { if (!is_first) std::cout << ' '; is_first = false; - std::string buf = Any2String(args[i].value); - std::cout << buf; + double *value_ptr = std::any_cast(&args[i].value); + if (!value_ptr) { + std::string buf = Any2String(args[i].value); + std::cout << buf; + } else + std::cout << std::fixed << std::setprecision(6) << *value_ptr; } std::cout << '\n'; return nullptr;