Как посчитать количество знаков после запятой в списке значений в Igor Pro

Я использую Igor Pro (не часто). Я пытаюсь подсчитать количество знаков после запятой, если она есть, для одной волны. А затем добавьте десятичный знак, сколько бы разрядов слева, которые были в первой волне, во вторую волну. Для справки я приложил фото того, что у меня сейчас есть. Волна «test_correct» ДОЛЖНА выглядеть, а «fix_err» - это то, что я сейчас выводю. Я занимаюсь этим некоторое время, но, похоже, не могу понять этого, любая помощь будет оценена. благодарностиПример

      Function testErrFix()

    wave test_energy, test_err
    variable i, j, s
    variable len = numpnts(test_energy)
    make/O/D/N=(len) fix_err
    string current_Energy
    string current_Err
    string Error
    variable slen
    For(i=0;i<len;i+=1)
        current_Energy = num2str(test_energy[i])
        current_Err = num2str(test_err[i])
        slen = strlen(current_energy)
        Error = ""
        For(j=0;j<slen;j+=1)
          If(Stringmatch(current_Energy[j], ".")==1)
           For(s=j;s<slen;s+=1)
                 Error += "." + current_Err[s-4] + current_Err[s-3] + current_Err[s-2]
                EndFor
           ElseIf(Stringmatch(current_Energy[j], "")==1)
             Error += current_Err[s+1]
                For(s=j;s<slen;s+=1)
                 Error = current_Err[s]
                EndFor
                EndIf
            EndFor
            fix_err[i] = str2num(Error)
            EndFor  
    
End

1 ответ

В вашем примере неправильно используется num2str. По умолчанию это возвращает только 5 десятичных знаков, см. Его документацию. Вы также можете настроить количество цифр в таблице.

Не могли бы вы подробно рассказать, чего хотите достичь? У меня никогда не было необходимости знать количество цифр справа от десятичной точки.

Другие вопросы по тегам