gpt4 book ai didi

Powershell 数字格式

转载 作者:行者123 更新时间:2023-12-04 03:21:59 25 4
gpt4 key购买 nike

我正在创建一个脚本,将 csv 文件转换为另一种格式。
为此,我需要我的数字具有固定格式以尊重列大小:00000000000000000,00(20 个字符,逗号后 2 个数字)
我尝试使用 -f 格式化数字和方法$value.toString("#################.##")没有成功
这是一个示例输入:

4000000
45817,43
400000
570425,02
15864155,69
1068635,69
128586256,9
8901900,04
29393,88
126858346,88
1190011,46
2358411,95
139594,82
13929,74
11516,85
55742,78
96722,57
21408,86
717,01
54930,49
391,13
2118,64
欢迎任何提示:)
谢谢 !

最佳答案

tl;博士 :
使用0而不是 #在格式字符串中:

PS> $value = 128586256.9; $value.ToString('00000000000000000000.00')

00000000000128586256.90
笔记:
  • 或者,您可以将格式字符串构造为表达式:
  • $value.ToString('0' * 20 + '.00')

  • 结果字符串反射(reflect)了与小数点有关的当前文化;例如,在 fr-FR(法语)生效时,,而不是 .会被使用;你可以通过一个特定的[cultureinfo] object 作为第二个参数来控制用于格式化的文化;见docs .
  • 正如你的问题,我假设 $value已经包含一个数字,这意味着您已经将 CSV 列值(通常是字符串)转换为数字。
  • 要将字符串文化敏感地转换为数字,请使用 [double]::Parse('1,2') ,例如(此方法也有一个重载,允许指定要使用的文化)。
  • 警告:相比之下,PowerShell 强制转换(例如 [double] '1.2' )在设计上始终是文化不变的,并且仅识别 .作为小数点,与当前有效的文化无关。


  • zerocukor287提供了关键的指针:
  • 无条件地表示格式化字符串中的数字,默认为 0如果没有可用的数字,请使用 0 , .NET 中的零占位符 custom numeric format string
  • 相比之下,# ,数字占位符,仅表示输入数字中实际存在的数字。

  • 为了说明区别:
    PS> (9.1).ToString('.##')

    9.1 # only 1 decimal place available, nothing is output for the missing 2nd

    PS> (9.1).ToString('.00')

    9.10 # only 1 decimal place available, 0 is output for the missing 2nd

    关于Powershell 数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68347099/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com