fix: error when output float

This commit is contained in:
2023-11-10 00:15:40 +08:00
parent 162953f39e
commit 647f53cadd
2 changed files with 10 additions and 6 deletions

View File

@ -89,7 +89,7 @@ class FucntionContainer {
public: public:
void AddFunction(const std::string &name, const FunctionItem &item); void AddFunction(const std::string &name, const FunctionItem &item);
std::any CallFunction(const std::string &name, std::any CallFunction(const std::string &name,
const std::vector<ParaArguItemType> &args, std::vector<ParaArguItemType> &args,
VariableContainer &Varables); VariableContainer &Varables);
}; };
std::any DeQuate(std::any val, VariableContainer &Variables); std::any DeQuate(std::any val, VariableContainer &Variables);

View File

@ -46,16 +46,20 @@ void FucntionContainer::AddFunction(const std::string &name,
FunctionIndex[name] = item; FunctionIndex[name] = item;
} }
std::any FucntionContainer::CallFunction( std::any FucntionContainer::CallFunction(const std::string &name,
const std::string &name, const std::vector<ParaArguItemType> &args, std::vector<ParaArguItemType> &args,
VariableContainer &Variables) { VariableContainer &Variables) {
if (name == "print") { if (name == "print") {
bool is_first = true; bool is_first = true;
for (int i = 0; i < args.size(); i++) { for (int i = 0; i < args.size(); i++) {
if (!is_first) std::cout << ' '; if (!is_first) std::cout << ' ';
is_first = false; is_first = false;
std::string buf = Any2String(args[i].value); double *value_ptr = std::any_cast<double>(&args[i].value);
std::cout << buf; 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'; std::cout << '\n';
return nullptr; return nullptr;