在ToString()函数中舍入浮点数?

时间:2017-11-02 19:02:29

标签: c++ c++-cli

所以我有一个带有标签的表单应该显示浮点值,问题是我需要将该数字四舍五入到小数点后两位:

label1->Text = System::Convert::ToString( (float)((float)temperature/204.6) );

我试过寻找几个小时,但是我发现没有方法直接舍入那个野兽方程式,据我所知,没有办法告诉ToString()将事物舍入为2位小数。

有没有简单的方法将结果舍入到ToString方法中的2位小数?

4 个答案:

答案 0 :(得分:4)

这很简单:

public class InterFace {
    public static void main(String[] args) {
        try {
            Process p = Runtime.getRuntime().exec("xterm");
            BufferedWriter w = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

            w.write("ls");
            w.flush();
            w.close();

            BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String s;
            while ((s = r.readLine()) != null) {
                System.out.println(s);
            }
        }
        catch (IOException io) {
            io.printStackTrace();
        }
    }
}

答案 1 :(得分:2)

  

有没有简单的方法将结果舍入到ToString方法中的2位小数?

不,不是std::tostring(),如果你想保留尾随零。请使用std::ostringstream代替相应的I/O manipulators

 std::ostringstream oss;
 oss << std::fixed << std::setprecision(2) << (temperature/204.6);
 label1->Text = oss.str();

答案 2 :(得分:1)

你可以多次将结果100,强制转换为int,然后除以100并使用强制转换为浮点数吗?

答案 3 :(得分:1)

这是与toFixed相当的JavaScript:

var dictionary = new Dictionary<string, float>();
dictionary.Add("var1", 5);
dictionary.Add("var2", 6);
dictionary.Add("var3", 7);
dictionary.Add("var4", 8);

var value1 = dictionary["var1"]; //5
var value2 = dictionary["var2"]; //6
var value3 = dictionary["var3"]; //7
var value4 = dictionary["var4"]; //8

打印:

#include <iostream>

std::string ToFixed(double number, size_t digits)
{
    char format[10];
    char str[64];
    sprintf_s(format, "%%0.%zdf", digits);
    return std::string(str, sprintf_s(str, format, number));
}

int main()
{
    std::cout << ToFixed((double)12345 / 204.6, 2) << std::endl;

    return 0;
}