当前位置: 首页 > 知识库问答 >
问题:

C:从双变量的小数部分中删除尾随的零

沃盛
2023-03-14

我正在寻找从双变量中删除尾随零并将结果分配回双变量。

请注意

  1. 我在C98上。
  2. 我不希望打印出来(使用snprintf、cout或printf和%g);我希望删除尾随的零并将余数分配回双变量。

输入:双(例如100.250或100.1010或100.375)

输出:双(100.25100.101100.375)

例如

double Price = 100.250;
double convert = TrimZeros(100.250);
// convert = 100.25
  • 我尝试将双精度转换为stringstream,并修剪该字符串的尾随零。但是我无法在修剪后将其转换回双精度(具有所需的精度)。

例如

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

我对任何事情都很好,即-一个直接函数,用于修剪双精度的尾随零并将余数分配回双精度变量。

  • 将双精度转换为字符串,修剪字符串中的零并将其正确转换回双精度。

请帮忙。

共有1个答案

葛言
2023-03-14

像double这样的类型保存值,而不是表示<代码>100、100.0、100和10x10都是相同值的不同表示。因此,你试图做的是一个类别错误,没有任何意义。

这就像问一个拥有十辆车的人,他是否可以在16号基地拥有十辆车。

// Now When I try to convert cPrice back to double, it adds extra zeros i.e. 100.250000

展示你是如何决定的。因为这是不可能的。价值将是百分之一百零一。为了你自己的目的,你可以用任何方式来表达。

当你做int i=2;时,i中的值是以十为基数的吗?还是二进制的?还是罗马数字?它不是这些东西中的任何一个。这是数字二。你有多少手。

 类似资料:
  • 问题内容: 我想删除所有结尾的零而不截断或舍入该数字(如果没有的话)。例如,数字可能类似于,在这种情况下,尾随零应被删除。但是这个数字也可能 几乎是 不合理的,比如在屏幕的边缘。有没有办法设置DecimalFormat或其他类以减少尾随的零,同时保持不合理性不变? 问题答案: 如果您愿意切换到,则可以使用#stripTrailingZeroes()方法来完成此操作。

  • 问题内容: 我正在寻找一种将数字转换为字符串格式的方式,删除任何多余的“ .0” 输入数据是浮点数和字符串的混合。所需的输出: 0->‘0’ 0.0->‘0’ 0.1->‘0.1’ 1.0->‘1’ 我想出了以下生成器表达式,但是我想知道是否有更快的方法: 进行真值检查可防止0变成空字符串。 编辑:我现在或多或少可以接受的解决方案是这样的: 似乎没有一种优雅的方法可以在python中处理这种(相当

  • 问题内容: 我是否错过了一个标准API调用,该调用从数字中删除了不重要的零? 例如 Number.toFixed()和Number.toPrecision()并不是我想要的。 问题答案: 如果将其转换为字符串,它将不会显示任何结尾的零,因为它是作为数字而不是字符串创建的,因此不会首先存储在变量中。

  • 问题内容: 我有字符串(来自DB),其中可能包含数字值。如果它包含数值,我想删除尾随零,例如: ,仅适用于第一个,而不适用于第二个。 很多答案都指向使用,但是我得到的可能不是数字。因此,我认为更好的解决方案可能是通过Regex。 问题答案: 有可能: 我懒又傻,只是 使用相同的解决方案,而不是某些注释中提到的,以便于理解

  • 我的java程序中有一些浮点变量: 在我的计算中,浮点变量小数点后的位数会增加或减少,以保持精度。例如,在一些计算系统之后。出来println(var1);可打印: 或 或 我想将这些值四舍五入到小数点后的3位,并删除后续的小数位数,以便对float进行四舍五入,如下所示: 据我所知,数字格式和字符串。format()以格式化字符串的形式返回输出。如何将输出作为四舍五入浮点,以便在计算中进一步使用

  • 问题内容: 我有一个很长的小数列表,我必须根据某些条件将其调整为10、100、1000,.... 1000000。当我将它们相乘时,有时会想要删除一个无用的尾随零(尽管并非总是如此)。例如… 是否有一个函数告诉小数对象舍弃这些无关紧要的零?我能想到的唯一方法是将其转换为字符串并使用正则表达式替换它们。 应该提到我正在使用python 2.6.5 EDIT senderle的好答案使我意识到,我偶尔