【问题标题】:Whats wrong with setprecision in my compiler?我的编译器中的 setprecision 有什么问题?
【发布时间】:2020-02-17 01:33:43
【问题描述】:

我的编译器 NetBeans 出现问题。似乎使用 setprecision 并没有做任何事情。这是查看正在发生的事情所需的代码。这部分程序检查是否有可能给定三个边的三角形。

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main(){
   double SideA,SideB,SideC,p,a,longest;

   cout<<"Enter the length of each side of your triangle. Press enter after each number."<<endl;

   cin>>SideA>>SideB>>SideC;

   cout<<fixed<<setprecision(3); 
   if(SideA+SideB<=SideC||SideA+SideC<=SideB||SideB+SideC<=SideA||SideA<=0||SideB<=0||SideC<=0)
   {
        cout<<"The length of the first side is "<<SideA<<"."<<endl;
        cout<<"The length of the second side is "<<SideB<<"."<<endl; 
        cout<<"The length of the third side is "<<SideC<<"."<<endl; 
        cout<<"This triangle is impossible."<<endl;
    }

    return 0;
}

我的问题是我希望边长在屏幕上显示时四舍五入到最接近的千分之一。我的 NetBeans 编译器不会这样做。我已经把它放到了在线编译器中,它在那里工作。

这是我在 NetBeans 中的 C++ 配置:

样本输入数据为:6.6666666, 5.4444444, 1

预期输出为:6.667, 5.443, 1.000

实际输出为:6.66667, 5.44444, 1

【问题讨论】:

  • 为什么不使用众多免费的高质量编译器之一,例如 GCC、Clang 甚至 Visual Studio Express?没有理由坚持使用 Netbeans。
  • 这是大学课,教授坚持我们使用netbeans:/
  • NetBeans 无论如何都是一个 IDE; OP 可能在后台使用 gcc 或 clang(如果在 Windows 上,则使用 mingw)。
  • @tadman 关于,“没有理由坚持使用 Netbeans”,NetBeans 为您选择的 C++ 编译器提供了 IDE,例如 gcc乙>。 NetBeans 本身不提供自己的 C++ 编译器,如果存在编译器问题,则与 NetBeans 无关。
  • 什么你的编译器? Netbeans 不是编译器,它是 IDE。你真正使用的是什么 C++ 编译器?

标签: c++ netbeans netbeans-8


【解决方案1】:

您的代码运行正常。您正在使用cout 显示双变量的值,而by default it will use a precision of 6

将使用通常的通用格式打印双精度值 可以很好地在少量空间中表示一个数字。基础的 使用的空间量由精度决定。 默认 精度为 6,这意味着最多使用 6 个有效数字 代表数字。这将计算左侧和左侧的数字 小数点右边。如果结果是,则打印更少的数字 准确;例如小数点右边的尾随零是 未打印。如下例所示,随着数量的增加 大小,小数点右边的位置将被删除,并且 结果根据需要四舍五入以保持在 6 位以内。

粗体文本解释了您为示例输入获得的输出:6.666675.444441

您可以使用cout.precision()setprecision() 限制精度以获得所需的结果。这在链接的文章中也有详细说明。

最后,请注意,这个问题与 NetBeans 无关。您可以通过使用 g++ 从命令行编译代码来确认这一点。当您运行它时,您将获得相同的结果,即使您没有使用 NetBeans。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多