C++:从双变量的小数部分删除尾随零
我正在寻找从双变量中删除尾随零并将结果赋给双变量。C++:从双变量的小数部分删除尾随零
请注意,
- 我对C++ 98
- 我不希望打印出来(使用的snprintf,COUT或用printf的%G);我正在寻找删除尾部零并将余数分配回双变量。
输入:双(如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
我很好的东西,即 - 直接功能裁剪的两倍尾随零和分配剩余回双变量。
OR
- 转换双为字符串,修剪掉串零并将其转换回正常的两倍。
请帮忙。
像double
这样的类型保存值,而不是表示。 100
,100.0
和one hundred
和10x10
对于相同的值都是不同的表示。所以你试图做的是一个没有任何意义的类别错误。
这就像问别人谁拥有十辆汽车,如果他能有十辆汽车在基部16
// Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000
告诉你如何确定这一点。因为这是不可能的。价值将是一百四十分之一。您可以以您自己的目的以任何方式表示。
When you do int i = 2;
是基于十位数的i
的值吗?还是二元的?或者它是罗马数字?这不是任何这些事情。这是号码二。你有多少手。
isnt'double x = 1;'和'int y = 1;'两个不同的相同值的表示? – user463035818
嗯我认为我的陈述并不矛盾,你写的是“双重持有价值的类型,而不是表现形式”......在我的情况下,“x”和“y”是两种不同的表示,但我不能让'x'持有相同值的不同表示,只是以相同方式表示的不同值(即“double”)。不知道这是否有任何意义.... – user463035818
错误的实质。 '像双重价值的类型,而不是表示'是很明显的错误。他们当然能够代表价值观。 – SergeyA
嗯......你不能用你描述的方式真正去除数字的数字。如果您不想在字符串表示中使用任何尾随零,只要将它们移除即可。 – InternetAussie
尾部零不影响数字,为什么要删除它们? '1。 == 1.0 == 1.00 == 1.000 == ...'。 – NathanOliver
这里的用例是什么? – CinCout