c++ - 我正在尝试在 Visual Studio 上创建自己的库/源函数
问题描述
到目前为止,我有这个,地板和战俘有红线,它说标识符“地板”是未定义的,我得到与战俘相同的消息。我做错了什么,我该如何解决?
double round_off(double value, double digits)
{
double roundedval;
roundedval = floor(value* pow(10, digits) + 0.5) / pow(10, digits);
return roundedval;
}
解决方案
确保你使用
#include <cmath>
使用命名空间
std::
中的函数时使用前缀std
。roundedval = std::floor(value* std::pow(10, digits) + 0.5) / std::pow(10, digits);
如果 IDE 仍然找不到函数,请忽略 IDE。只要你的代码编译。构建。并成功运行,IDE 的问题可以忽略。
小代码改进建议
您有两次调用std::pow(10, digits)
. 它可以减少到一个。
double p = std::pow(10, digits);
roundedval = std::floor(value*p + 0.5)/p;
进一步的改进是根本不使用该变量roundedval
。该功能可以是:
double round_off(double value, double digits)
{
double p = std::pow(10, digits);
return std::floor(value*p + 0.5)/p;
}
下一个改进将是int
用作类型digits
而不是double
.
double round_off(double value, int digits)
{
double p = std::pow(10, digits);
return std::floor(value*p + 0.5)/p;
}
推荐阅读
- android - 在约束布局中使用 NestedScrollView 的问题
- git - 如何为 github 和 bitbucket 使用不同的全局电子邮件?
- python - 为什么softmax交叉熵损失在张量流中永远不会给出零值?
- c# - 如何在 C# 中构建 TimePicker.TimeChanged 事件?
- html - 影响顶部的颜色过渡‽
- javascript - ajax url 将我定向到 .php?userid=undefined
- delphi - TIdFTP.Put() 和 TIdFTP.Get() 给出了意想不到的结果
- c++ - 16位到10位转换码说明
- c - 如何打印二进制文件的真实内容
- php - PHP Curl 请求增加超时