为了账号安全,请及时绑定邮箱和手机立即绑定

使用字符串格式显示最多2位的十进制或简单整数

/ 猿问

使用字符串格式显示最多2位的十进制或简单整数

米琪卡哇伊 2019-07-26 15:26:53

使用字符串格式显示最多2位的十进制或简单整数

我有一个显示的价格字段,有时可以是100或100.99或100.9,我想要的是只有在为该价格输入小数时才显示2位小数的价格,例如,如果它的100只是它应该只显示100不是100.00,如果价格是100.2,它应该显示100.20同样100.22应该是相同的。我用谷歌搜索并遇到了一些例子,但它们与我想要的完全不符:


// just two decimal places

String.Format("{0:0.00}", 123.4567);      // "123.46"

String.Format("{0:0.00}", 123.4);         // "123.40"

String.Format("{0:0.00}", 123.0);         // "123.00"


查看完整描述

3 回答

?
守候你守候我

一种不雅的方式是:

var my = DoFormat(123.0);

DoFormat类似的东西:

public static string DoFormat( double myNumber ){
    var s = string.Format("{0:0.00}", myNumber);

    if ( s.EndsWith("00") )
    {
        return ((int)myNumber).ToString();
    }
    else
    {
        return s;
    }}

不优雅,但在某些项目的类似情况下为我工作。


查看完整回答
反对 回复 2019-07-26
?
慕的地6264312

很抱歉重新启动此问题,但我在这里找不到正确的答案。


在格式化数字中,您可以将其0用作必填位置和#可选位置。


所以:


// just two decimal places

String.Format("{0:0.##}", 123.4567);      // "123.46"

String.Format("{0:0.##}", 123.4);         // "123.4"

String.Format("{0:0.##}", 123.0);         // "123"

你也可以结合0使用#。


String.Format("{0:0.0#}", 123.4567)       // "123.46"

String.Format("{0:0.0#}", 123.4)          // "123.4"

String.Format("{0:0.0#}", 123.0)          // "123.0"

因为总是使用这种格式化方法CurrentCulture。对于一些文化.将改为,。


回答原始问题:

最简单的解决方案来自@Andrew(这里)。所以我个人会使用这样的东西:


var number = 123.46;

String.Format(number % 1 == 0 ? "{0:0}" : "{0:0.00}", number)


查看完整回答
反对 回复 2019-07-26
?
扬帆大鱼

这是一种常见的格式化浮点数用例。


不幸的是,所有内置的单字母格式字符串(例如F,G,N)都不会直接实现这一点。

例如,num.ToString("F2")将始终显示2个小数位123.40。


你必须使用0.##模式,即使它看起来有点冗长。


一个完整的代码示例:


double a = 123.4567;

double b = 123.40;

double c = 123.00;


string sa = a.ToString("0.##"); // 123.46

string sb = b.ToString("0.##"); // 123.4

string sc = c.ToString("0.##"); // 123


查看完整回答
反对 回复 2019-07-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信