X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fstd.c;fp=src%2Fstd.c;h=47c3e5344b7d462461dee1516aeefc80b2ab501a;hb=653d087e15293c562409ef29ae231f8b16de39ea;hp=522606f8fd48b737ea33861a3b8dd46e58f09b40;hpb=0da8e0bd2bf8496745ca4796c7f533dffc920f5f;p=libsigrok.git diff --git a/src/std.c b/src/std.c index 522606f8..47c3e534 100644 --- a/src/std.c +++ b/src/std.c @@ -712,15 +712,21 @@ SR_PRIV GVariant *std_gvar_min_max_step_array(const double a[3]) SR_PRIV GVariant *std_gvar_min_max_step_thresholds(const double min, const double max, const double step) { - double d; + double d, v; GVariant *gvar, *range[2]; GVariantBuilder gvb; g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY); for (d = min; d <= max; d += step) { - range[0] = g_variant_new_double(d); - range[1] = g_variant_new_double(d); + /* + * We will never see exactly 0.0 because of the error we're + * accumulating, so catch the "zero" value and force it to be 0. + */ + v = ((d > (-step / 2)) && (d < (step / 2))) ? 0 : d; + + range[0] = g_variant_new_double(v); + range[1] = g_variant_new_double(v); gvar = g_variant_new_tuple(range, 2); g_variant_builder_add_value(&gvb, gvar);