在C ++中删除尾随零

时间:2019-09-11 05:38:42

标签: c++

我想问一下如何删除小数点后的尾随零吗?

我已经阅读了很多关于它的话题,但是我不清楚它们。您能告诉我一些简单易懂的方法吗?

例如 12.50 到12.5,但实际输出为 12.50

6 个答案:

答案 0 :(得分:1)

显而易见的方法是使用Sub ChangeAuthorName() Dim sWOOXML As String Dim findAuthor As String Dim replaceAuthor As String findAuthor = "w:author=" & Chr(34) & "Cindy Meister" & Chr(34) replaceAuthor = "w:author=" & Chr(34) & "unknown" & Chr(34) sWOOXML = ActiveDocument.content.WordOpenXML sWOOXML = Replace(sWOOXML, findAuthor, replaceAuthor) ActiveDocument.content.InsertXML sWOOXML End Sub ,例如:

setprecision(0)

答案 1 :(得分:1)

这是IMHO在C ++中过于复杂的一件事。无论如何,您需要通过在输出流上设置属性来指定所需的格式。为方便起见,定义了许多manipulators

在这种情况下,您需要设置fixed表示并将precision设置为2,以使用相应的操纵器将小数点后的数值四舍五入到小数点后两位,请参见下文(注意{{1} }导致四舍五入到所需的精度)。棘手的部分是删除尾随零。据我所知,C ++不支持此功能,因此您必须进行一些字符串操作。

要执行此操作,我们将首先将值“打印”为字符串,然后在打印该字符串之前对其进行操作:

setprecision

答案 2 :(得分:1)

对于C ++,请检查此How to output float to cout without scientific notation or trailing zeros?

使用printf(),您可以使用以下方法执行此操作,

int main()
{ 
    double value = 12.500;
    printf("%.6g", value );  // 12.5 with 6 digit precision
    printf("%.6g", 32.1234);  // 32.1234
    printf("%.6g", 32.12300000);  // 32.123
}

答案 3 :(得分:0)

只需使用“ printf”功能。 printf("%.8g",8.230400);将打印'8.2304'

float value =4.5300; printf ("%.8g",value); 将返回4.53。

尝试此代码。这很简单。

答案 4 :(得分:0)

我被这个难住了一段时间,不想转换为字符串来完成工作,所以我想出了这个:

new("new")
<块引用>

新值 = 1

答案 5 :(得分:-1)

您可以将值四舍五入为小数点后两位,

x =下限((x * 100)+ 0.5)/ 100;

,然后使用printf打印以截断任何结尾的零。

printf(“%g”,x);

示例:

double x = 25.528;
x = floor((x * 100) + 0.5)/100;
printf("%g", x);

输出:25.53