为何这段Pine Script代码中str.format与str.tostring显示数值不同?
Pine Script v5中str.format与str.tostring输出数值差异的原因
这是两个函数的数值显示规则差异导致的:
str.tostring()会直接输出数值的底层完整精度,Pine Script里的价格数据(比如high)本身存储时带有较多小数位(可能是8位甚至更多),该函数不会做任何截断或四舍五入,连浮点数存储的微小精度误差也会一并展示。str.format("{0,number}")是按人类易读的格式化规则输出,默认会根据图表的价格精度设置对数值进行四舍五入,保留较少的小数位,同时自动忽略浮点数存储的微小误差,输出更简洁的结果。
举个实际场景的例子:假设high的实际存储值是245.67890123
str.tostring(high)会输出245.67890123str.format("{0,number}", high)可能输出245.68或245.6789(取决于当前图表的小数位配置)
如果需要让两者输出一致,可以给str.format()指定精确的小数位数,比如:
str.format("{0,number,#.########}", high)
这样就能强制保留8位小数,和str.tostring()的输出精度对齐。
内容的提问来源于stack exchange,提问作者Micke
相关产品推荐
相关产品推荐

