左填充浮点数而不丢失小数点后的尾随零
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}"
我正在尝试写入固定格式的文本文件,但在正确设置数字格式时遇到了一些问题。它需要用前导零和隐含的小数来填充。
示例:
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}"