gpt4 book ai didi

java - 为什么我们不能在java中的printf中使用整数精度?只是好奇

转载 作者:行者123 更新时间:2023-11-29 04:08:59 26 4
gpt4 key购买 nike

System.out.printf("%.2d",123);

获得 12 或 23 的输出似乎是合乎逻辑的,但为什么他们选择将此作为错误呢?

最佳答案

... it seems logical to get the output of 12 or 23 ...

没有。对不起。错误。错误的想法。

printf 方法的行为是根据它的规范所说的,而不是你“看起来合乎逻辑”的1

javadoc是这样说的:

"The format specifiers for general, character, and numeric types have the following syntax:

 %[argument_index$][flags][width][.precision]conversion

The optional precision is a non-negative decimal integer usually used to restrict the number of characters. The specific behavior depends on the conversion.

Byte, Short, Integer, and Long

[For all conversions ...]

The precision is not applicable. If precision is specified then an IllegalFormatPrecisionException will be thrown."

进一步阅读 Formatter 的 javadoc 会发现 %d 格式不支持整数数字的“截断”。

... why they chose to make this an error instead?

因为一个明确的运行时错误告诉您代码中存在错误,这比应用程序产生意外结果要好,因为后者可能会通过您的测试和其他质量控制流程。


1 - 在我看来,您的建议违反直觉,不符合逻辑。那么谁的“逻辑”应该获胜?两者都不!您应该阅读规范,而不是假设一切都像您认为的那样工作。请注意,此原则适用于所有编程 Activity 。如有疑问,请阅读规范!

关于java - 为什么我们不能在java中的printf中使用整数精度?只是好奇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56274570/

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