这是我的问题。我有一个向量suct该向量,并在一些操作后,我将一些双值存储到此向量。但是,我希望他们都有相同的小数点数字。我的意思是,如果要存储的第一个值是 4.143 ,第二个值是 67.32 ,第三个值是165,那么我想将它们存储为 004.143 和 067.320 * 165.000 *。有什么方法可以做到吗?提前致谢
答案 0 :(得分:1)
您似乎对
显示值时,您可以使用String.format()
或System.out.printf()将值格式化为指定的宽度和小数位数。
例如:
double a = 4.143;
double b = 67.32;
double c = 165;
System.out.printf("%07.3f %07.3f %07.3f", a, b, c);
打印:
004.143 067.320 165.000
编辑:所以它是C ++(对不起;我整天都在回答Java问题)。这同样适用,但printf()
或stringstream
或ostream
用于格式化。概念是一样的。
至于下面的评论:“034.1”和“34.1”是相同的值。它们以任何一种语言存储相同。填充0是显示功能,而不是存储功能。基数排序传统上涉及整数;你可以通过例如将你的值转换为整数。乘以1000(或其他),然后只需使用数学来获得数字。例如:
double value1 = 0.124;
double value2 = 53.0;
printf("%i\n", (int)(value1 * 1000.0) % 10);
printf("%i\n", (int)(value2 * 1000.0) % 10);
打印4和0(千分之一位数)。对于基数排序,在比较两个键时,请适当地计算和比较数字。
答案 1 :(得分:1)
float
类型以这种方式命名,因为它代表浮动点数。如果你不想存储固定位置的数字,你必须设计自己的类(或使用someone else made)。别无他法。
但是 - 如果你只关心浮点数在内存中的存储方式不同,这取决于点的位置,那么你就错了。无论点在哪里,编码都是一样的。您应该阅读IEEE 754标准。
您还可以使用stringstream
将float
写入具有固定精度的std::string
。
当然,如果您只是关注显示,其他人已在回复中明确表示。