左填充浮点数而不丢失小数点后的尾随零

Left-pad a floating point number without losing trailing zeros after decimal point

我正在尝试写入固定格式的文本文件,但在正确设置数字格式时遇到了一些问题。它需要用前导零和隐含的小数来填充。

示例:

43.80

输出需要是:

0000004380

到目前为止,我已经尝试将双精度转换为字符串,替换小数,然后用“0”填充。

((amount.ToString()).Replace(".","")).PadLeft(10, '0')

问题在于数字以零结尾。上面的示例结果为:

0000000438

有什么建议吗?

decimal value = 34.80M;
int intVal = (int)(value * 100);
return intVal.ToString("0000000000");

你可以试试:

((string.Format("{0:0.00}", amount)).Replace(".","")).PadLeft(10, '0')

这样当值为 0 时,您就不会丢失第二位小数。

您可以按照本文所述传递 .ToString() 格式字符串: https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

传入的值是否总是有两位小数?如果是这样,你可以乘以 100 以去掉小数,然后到 .ToString("D10")

(Int)(43.80 * 100).ToString("D10")

这应该可以完成工作:$"{(int)(amount * 100):D010}"