Java中String.format()的%ld在C++中的等效表示是什么?

73
例如,在C++中%11.2lf变成了Java中的%11.2f。那么长格式呢?
2个回答

100

可能你已经搞清楚了,不需要指定 l 标志。根据文档,十进制整数与 C++ 中一样用 d 来指定。因此答案就是 %d


1
如果您要打印的值很长,那么%d可能不足以满足需求。在这种情况下,您需要进行解析。 - Milli
3
@Milli:虽然我不确定第一句话(认为符号位不是一个考虑因素),但是我通过实验确认,%d可以正确地格式化长整型! - Carl Smotricz
你是对的!我的错.. 我在同一语句中也有一个字符串和长整型.. 错误是由于 %d %d 导致的,而应该是 %d %s。谢谢Andrzej! - Milli
1
@CarlSmotricz 是正确的,符号与此无关。我修改了问题以删除它。 - Eloff
如果您在 'd' 标志(例如 %ld)中使用 'l' 标志,则 String.format() 在运行时会抛出 java.util.UnknownFormatConversionException 异常(在 Java 7 上演示)。 - sdenham

54

使用 %d 表示十进制数(长整型、整型)。这种方法能够正常工作。例如:

System.err.println(String.format("%d", 193874120937489387L));

...将可以正常打印。阅读有关java.util.Formatter的更多详细信息。%d将使用long,没有问题。


1
完美运行! - Rahul Rastogi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接