From 515477f3d232cccea3582369d0fc73248d23baf3 Mon Sep 17 00:00:00 2001 From: bm1549 Date: Mon, 23 Mar 2026 20:49:59 -0400 Subject: [PATCH] Fix _dd.p.ksr scientific notation for very small sampling rates Very small sampling rates (e.g. 0.000001) were formatted using Ruby's %.6g format which outputs scientific notation like "1e-06". This changes to explicit rounding at the integer level and %.6f formatting to always produce decimal notation with up to 6 decimal digits, trailing zeros stripped (e.g. "0.000001"). Fixes APMAPI-1869 Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/datadog/tracing/transport/trace_formatter.rb | 2 +- spec/datadog/tracing/transport/trace_formatter_spec.rb | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/datadog/tracing/transport/trace_formatter.rb b/lib/datadog/tracing/transport/trace_formatter.rb index e6e5217c1f..37b8623a5b 100644 --- a/lib/datadog/tracing/transport/trace_formatter.rb +++ b/lib/datadog/tracing/transport/trace_formatter.rb @@ -117,7 +117,7 @@ def tag_knuth_sampling_rate! root_span.set_tag( Tracing::Metadata::Ext::Distributed::TAG_KNUTH_SAMPLING_RATE, - format('%.6g', rate) + format('%.6f', (rate * 1e6).round / 1e6.to_f).sub(/\.?0+\z/, '') ) end diff --git a/spec/datadog/tracing/transport/trace_formatter_spec.rb b/spec/datadog/tracing/transport/trace_formatter_spec.rb index 6725f41782..05e99022db 100644 --- a/spec/datadog/tracing/transport/trace_formatter_spec.rb +++ b/spec/datadog/tracing/transport/trace_formatter_spec.rb @@ -518,15 +518,17 @@ end end - context 'value formatting with 6 significant digits' do + context 'value formatting with up to 6 decimal digits' do [ [1.0, '1'], [0.5, '0.5'], [0.1, '0.1'], [0.7654321, '0.765432'], [0.100000, '0.1'], - [0.000001, '1e-06'], + [0.000001, '0.000001'], [0.123456789, '0.123457'], + [0.0000001, '0'], + [0.0000005, '0.000001'], ].each do |rate, expected| context "when rate is #{rate}" do let(:trace_options) { {id: trace_id, agent_sample_rate: rate} }