如何使用变量precision控制小数点后输出的数字位数?
用变量指定小数点打印位数的实现方法
这问题我之前写代码时也纠结过,其实核心就是把硬编码的精度数字换成变量传递给格式化逻辑就行,不同编程语言的实现大同小异,给你举几个常用场景的例子:
Python 实现
如果原来你是这么写死3位精度的:
num = 123.456789 print("{:.3f}".format(num)) # 输出 123.457
换成precision变量的话,有几种简洁的写法:
- 用格式化字符串的嵌套占位符:
precision = 3 num = 123.456789 print("{:.{}f}".format(num, precision)) # 输出 123.457 - 用Python 3.6+支持的f-string(更直观):
precision = 3 num = 123.456789 print(f"{num:.{precision}f}") # 输出 123.457
Java 实现
原来硬编码3位的写法:
double num = 123.456789; System.out.printf("%.3f", num); // 输出 123.457
换成变量的话,可以直接拼接格式字符串,或者用DecimalFormat:
- 拼接格式字符串的方式:
int precision = 3; double num = 123.456789; System.out.printf("%." + precision + "f", num); // 输出 123.457 - 用
DecimalFormat更灵活(适合复杂格式):int precision = 3; double num = 123.456789; DecimalFormat df = new DecimalFormat("#." + "#".repeat(precision)); System.out.println(df.format(num)); // 输出 123.457
C++ 实现
原来硬编码3位的写法(需要包含<iomanip>头文件):
#include <iostream> #include <iomanip> using namespace std; int main() { double num = 123.456789; cout << fixed << setprecision(3) << num; // 输出 123.457 return 0; }
换成变量的话直接把setprecision的参数换成precision变量就行:
#include <iostream> #include <iomanip> using namespace std; int main() { int precision = 3; double num = 123.456789; cout << fixed << setprecision(precision) << num; // 输出 123.457 return 0; }
总的来说,不管用哪种语言,核心逻辑都是把精度值从硬编码的数字改成变量传递,这样就能动态控制小数点后的位数啦。
内容的提问来源于stack exchange,提问作者saar13531
相关产品推荐
相关产品推荐

