【问题标题】:How to ignore value after first decimal point first value if it is 0 else take it if greater than 0?如何忽略第一个小数点后的值如果第一个值为0,否则如果大于0,则取它?
【发布时间】:2021-08-22 05:13:35
【问题描述】:

我的值如下:

decimal val = 1.100;

现在我要做的是,如果我在第一个小数点值后为 0,那么我只想取 1.​​1 并忽略休息,如果我有 1.11,那么我想取整个 1.11

这就是我的想法:

  1. 将十进制转换为字符串。

  2. 按点分割字符串。

  3. 检查长度是否为 2,如果第二个位置大于 0,则取整数,如 11 作为十进制值 1.11 否则如果十进制是这样的 1.10,则取 1.1,否则在十进制 1.000 的情况下取 1.0

示例输入和输出:

1.000 // output 1.0
1.100 // output 1.1
1.110 // output 1.11
1.111 // output 1.111
1.102 // output 1.102

但这是我想避免的肮脏逻辑。没有任何内置方法或更好的方法可以做到这一点吗?

注意:我不想做任何总结。

【问题讨论】:

  • 如果值为 1.1045 怎么办?你想要的这个值
  • @Blue 我只有 3 个小数位,所以它会像这样 1.104,在这种情况下我想取 1.​​104

标签: c#


【解决方案1】:

您可以使用custom numeric format string

val.ToString("0.0##")

【讨论】:

  • 是的,这很有效。非常感谢您为帮助我所做的努力,请继续像这样提供帮助 :)
  • 感谢您的客气话。
【解决方案2】:

希望你喜欢这个逻辑。请试试这个。

  double val = 1.002;
  string output = !val.ToString().TrimEnd('0').Contains('.') ? string.Format("{0}.0", val) : val.ToString().TrimEnd('0');

如果值为 1.00,那么我的输出将是 1.0

然后你可以把这个字符串转换成其他数据类型。

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2017-08-23
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多