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