如果两个数字是相同的 0,则在 C++ 和 Root 中创建 0 条件
If two digits are the same 0s then make 0 condition in C++ and Root
在我的代码中,图例是 运行 在一个循环中,我试图用
显示图表
0-10%
10-20%
等等。问题是当我写这段代码时
legend->AddEntry(gr[i], Form("%d0-%d0 %%",i+0,i+1), "lep");
显示
00-10%
10-20% etc
那么如何在第一行不显示 00 而显示 0?
对所显示的语句进行少量改编就足够了;使用:
legend->AddEntry(gr[i], Form("%d-%d %%", i*10 , (i+1)*10), "lep");
解释:
Form("%d0-%d0 %%",i+0,i+1)
似乎是某种字符串格式,i
你的循环变量从 0 到 9,对吧?显示的 Form
语句只是将“0” hard-coded 附加到 i
中的单个数字;相反,您可以将 i 乘以 10,得到您想要打印的实际数字;因为 10*0 仍然是 0,所以这仍然是一位数;所以,用 Form("%d-%d %%", i*10, (i+1)*10)
替换之前的 Form(...) 调用,你应该得到你想要的结果!
如果您担心打印 i*10
比打印带有“0”后缀的 i“效率低下” - 不要担心。无论如何,字符串的格式化和输出很可能比乘法慢几个数量级,因此进行多次乘法的任何开销都可以忽略不计。
在我的代码中,图例是 运行 在一个循环中,我试图用
显示图表0-10%
10-20%
等等。问题是当我写这段代码时
legend->AddEntry(gr[i], Form("%d0-%d0 %%",i+0,i+1), "lep");
显示
00-10%
10-20% etc
那么如何在第一行不显示 00 而显示 0?
对所显示的语句进行少量改编就足够了;使用:
legend->AddEntry(gr[i], Form("%d-%d %%", i*10 , (i+1)*10), "lep");
解释:
Form("%d0-%d0 %%",i+0,i+1)
似乎是某种字符串格式,i
你的循环变量从 0 到 9,对吧?显示的 Form
语句只是将“0” hard-coded 附加到 i
中的单个数字;相反,您可以将 i 乘以 10,得到您想要打印的实际数字;因为 10*0 仍然是 0,所以这仍然是一位数;所以,用 Form("%d-%d %%", i*10, (i+1)*10)
替换之前的 Form(...) 调用,你应该得到你想要的结果!
如果您担心打印 i*10
比打印带有“0”后缀的 i“效率低下” - 不要担心。无论如何,字符串的格式化和输出很可能比乘法慢几个数量级,因此进行多次乘法的任何开销都可以忽略不计。