【问题标题】:How to cout int like a double如何像双倍一样计算int
【发布时间】:2021-03-24 20:26:34
【问题描述】:

我想显示一些带有货币索引的整数(我的意思是点和双零) 例如像这里:

#include <iostream>

int main() {
    int w1=700,c1=99,c2=98;
    double noh2o=w1*(100.0-c1)/100.0;
    double w2=noh2o+noh2o/(100.0-c2)*c2;
    std::cout<<w2<<std::endl;
}

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 使用double 根本不是一个好主意,请参阅stackoverflow.com/questions/3730019/…。最好保留一个计算美分的整数变量,并分别输出amount / 100amount % 100
  • 如果您在谈论w2,它已经 double 并且应该是“输出”。您显示的代码有什么问题?你得到什么输出?你期望的输出是什么?
  • 您希望整数1234 显示为1234.00 还是12.34? (您的程序的输出是350;这并没有告诉我您要做什么。)std::cout &lt;&lt; n &lt;&lt; ".00" 不符合您的要求吗?

标签: c++ cout


【解决方案1】:

您应该使用语言环境库。

大部分是从https://en.cppreference.com/w/cpp/io/manip/put_money复制过来的:

#include <iomanip>
#include <iostream>
#include <locale>

int main() {
  long double val = 239.9;
  std::cout.imbue(std::locale("en_US.UTF-8"));
  std::cout << std::showbase
            << "en_US: " << std::put_money(val)
            << std::endl;
  return 0;
}

【讨论】:

  • 这是一个被接受的更好的答案
  • 答案很好,但我对这个功能持怀疑态度。以当地货币显示一些金额很少有意义。这样的事情可以解释为什么我最近在一个主要网站上遇到了一些疯狂的价格,以我的当地货币很好地显示,但显然金额仍然是原始货币。
  • @nielsen 是的,如果货币价值本身没有被转换,那将是一个问题。我不认为我们可以期望 C++ 库能够在互联网上获取货币价值并进行实时转换。 :-)
【解决方案2】:

使用std::fixedstd::setprecision

Try it online!

#include <iostream>
#include <iomanip>

int main() {
    int w1=700,c1=99,c2=98;
    double noh2o=w1*(100.0-c1)/100.0;
    double w2=noh2o+noh2o/(100.0-c2)*c2;
    std::cout << std::fixed << std::setprecision(2) << w2 << std::endl;
}

输出:

350.00

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 1970-01-01
    • 2019-11-08
    • 2012-03-10
    • 1970-01-01
    • 2020-10-31
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多