我正在使用money_format第一个参数'%n'包含美元符号,我将区域设置设置为en_US但它仍然不包括它.为什么?
我使用以下代码Binding Path=InvoiceAmount, StringFormat={}{0:C0}片段和它的工作好,因为我对分数部分不感兴趣.它以这种方式产生12美元的结果.但是为了阅读,货币格式可以是这个12.00美元而不是以上.
我的意思是小数部分的任何四舍五入代码或任何针对这种情况的黑客代码
提前致谢
String.Format和StringBuilder(通过AppendFormat方法)允许调用者将值泵入他们准备的字符串中,例如:
string temp = string.Format("Item {0} of {1}, Record Id: {2} started...",
itemCounter.ToString(),
totalItemsToProcess.ToString(),
myRecord.RecordId);
MyMethod(temp);
Run Code Online (Sandbox Code Playgroud)
但是,而不是构建一个字符串并将其传递给"MyMethod()",我宁愿有一个人们这样调用的重载:
MyMethod("Item {0} of {1}, Record Id: {2} started...",
itemCounter.ToString(),
totalItemsToProcess.ToString(),
myRecord.RecordId);
Run Code Online (Sandbox Code Playgroud)
你会如何实现?有什么我可以利用或我必须写一堆自定义代码?
我知道如何格式化double以仅保留可用的小数位(DP),最多只能保留一定数量的DP.此示例最多可保留4个DP.
double d = 1.0;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1"
double d = 1.23;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.23"
double d = 1.2345678;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.2346", rounding off: bad!
Run Code Online (Sandbox Code Playgroud)
现在我想要整数,例如1.0在"1"没有必要的情况下返回.0,#格式字符确实提供了该功能.但是我该如何确保数字永远不会变圆呢?是否有任何其他的方式比任意长的链其他#如"#.###########################################"?
或者我应该使用double到string的默认转换,并截断".0"它在结尾处是否出现:
String s = "" + d;
if(s.substring(s.length()-2).equals(".0")) {
s=s.substring(0, s.length()-2);
}
Run Code Online (Sandbox Code Playgroud)
这两种方式看起来都非常笨拙.
如何重复使用相同的字符串进行格式放置?例如
"%s-%s-%s" format("OK")
>> "OK-OK-OK"
Run Code Online (Sandbox Code Playgroud) 好的我正在研究数字格式,我发现你可以使用%d或%i来格式化整数.例如:
number = 8
print "your number is %i." % number
Run Code Online (Sandbox Code Playgroud)
要么
number = 8
print "your number is %d." % number
Run Code Online (Sandbox Code Playgroud)
但有什么区别?我的意思是我找到了一些东西,但这完全是胡言乱语.有人在这里说温和代码或英语吗?
python integer string-formatting number-formatting python-2.7
基本上我试图以与Windows计算器完全相同的方式执行数字格式化.因此,我的要求是:
number.ToString("G16").number.ToString(String.Format("#,0.{0};-#,0.{0}", New String("#"c, 15)))有关如何将这些组合在一起以获得与Windows计算器相同的行为的任何想法?
一些具有所需输出的示例:
我在下面添加了一个答案,如果使用一个字符串格式化无法实现所需的输出,我将使用该答案.如果您认为没有直接的方法来实现这一点(这是我原来的要求),请随意建议对该答案进行任何优化/更改
对不起,如果我对任何人造成某种混淆.我只是认为可能有一个简单的字符串格式来实现这一点,而且我仍然很想知道这是不是真的.
有没有简洁的格式化数字的方式,有时也可以是一个字符串?
这个数字通常是一个浮点数,但偶尔它也表示为字符串"n/a".
我想用固定数量的小数格式化浮点数,但是如果它不是数字,则打印整个字符串.
例如:
var=3.145623
print("This is {0:.2f}".format(var))
>>>This is 3.14
Run Code Online (Sandbox Code Playgroud)
,但
var = "n/a"
print("This is {0:.2f}".format(var))
>>> File "<stdin>", line 1, in <module>
>>> ValueError: Unknown format code 'f' for object of type 'str'
Run Code Online (Sandbox Code Playgroud)
我对ValueError并不感到惊讶,但想知道是否有简洁的方法,理想情况下没有明确的if语句.
假设我有3个python字符串,我可以格式化所有3个字符串,它们之间有2个分隔空格,如下所示:
h="hello"
m="my"
w="world"
print("{} {} {}".format(h,m,w))
Run Code Online (Sandbox Code Playgroud)
或使用
print("%s %s %s" % (h,m,w))
Run Code Online (Sandbox Code Playgroud)
现在假设我确定h和w都有值,但m可能是一个空字符串.上面的两个代码片段将导致"hello{two speces here}world.
我知道我可以使用不同的函数和条件表达式来通过代码进行格式化
print(h+" " + m+(" " if len(m)>0 else "") + w)
Run Code Online (Sandbox Code Playgroud)
或选择不同的格式字符串
print(("{} {} {}" if len(m)>0 else "{}{} {}").format(h,m,w))
Run Code Online (Sandbox Code Playgroud)
基于m的长度.
我的问题是可以使用格式化字符串来完成吗?(例如,如果参数不为空,将填充1个空格的某些格式修饰符).
我正在打印浮点值(例如:52.12:),如下所示:
fmt.Sprintf("%.2f%s", percentageValue, "%%")
Run Code Online (Sandbox Code Playgroud)
输出就像52.12%.但我想用英文以外的其他语言打印,小数点是逗号,.如何在Go中使用fmt.Sprintf.我想要这样的输出52,12%.