将具有零的字符串转换为十进制

时间:2017-03-03 07:22:22

标签: c#

我有一个这样的字符串:“000123”。

我想知道如何将此字符串转换为十进制但保留前导零。我使用了DB::update('update super_admins set status = !status where primary_key = ?', [3]); Convert.ToDecimal()& Decimal.TryParse。但所有这些方法都不断删除前导零。他们给了我一个输出:123。我希望小数返回000123.这可能吗?

2 个答案:

答案 0 :(得分:2)

不,不是。 System.Decimal维护尾随零(自.NET 1.1起)但不前导零。所以这有效:

decimal d1 = 1.00m;
Console.WriteLine(d1); // 1.00
decimal d2 = 1.000m;
Console.WriteLine(d2); // 1.000

...但你领先的零版本赢了

如果您实际上只是尝试格式化"小数点前至少6位数"但是,这更容易:

string text = d.ToString("000000.#");

(这会丢失有关尾随零数的信息,请注意 - 我不确定如何轻松完成这两项操作。)

答案 1 :(得分:0)

所以你需要将000123存储在十进制变量中,首先不可能,因为000123不是实数。我们只能在十进制变量中存储-79,228,162,514,264,337,593,543,950,335+79,228,162,514,264,337,593,543,950,335范围内的实数。无需担心您可以实现目标decimal.Parse()从输入中获取值(123)(如您所做)并使用该值处理计算。并且只要您想将其显示为.ToString("000000")

,请使用000123