【发布时间】:2017-09-22 10:12:43
【问题描述】:
我希望从双变量中删除尾随零并将结果分配回双变量。
请注意
- 我使用的是 C++ 98。
- 我不想打印出来(使用带有 %g 的 snprintf、cout 或 printf);我正在寻找删除尾随零并将余数分配回双变量。
输入:双精度(例如 100.250 或 100.1010 或 100.375)
输出:双倍(100.25、100.101、100.375)
例如
double Price = 100.250;
double convert = TrimZeros(100.250);
// convert = 100.25
- 我尝试将双精度转换为字符串流,并修剪该字符串的尾随零。但是,我无法在修剪后将其转换回双精度(具有所需的精度)。
例如
double Price = 100.250;
ostringstream osPrice;
osPrice << fixed << Price;
string cPrice = TrimString(osPrice.str()); // my function to trim trailing zero of string
//cPrice = "100.25"
// Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000
我对任何事情都很好,即 - 一个直接函数,用于修剪 double 的尾随零并将余数分配回 double 变量。
或
- 将双精度转换为字符串,从字符串中删除零并将其正确转换回双精度。
请帮忙。
【问题讨论】:
-
嗯...您无法以您描述的方式真正删除数字的数字。如果您不想在字符串表示中出现任何尾随零,只需在它们出现时将其删除。
-
尾随零不会影响数字,为什么要删除它们?
1. == 1.0 == 1.00 == 1.000 == .... -
这里的用例是什么?