Teknologian jakaminen

jmeter-beanshell-oppiminen 5-papukuoren yhteen-, vähennys-, kerto- ja jakooperaatiot

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Käyttämäni skenaario on summan laskeminen, joten keskityn lähinnä summaan, mikä tuntuu, että tämä osa on hieman hankala.

1. Kirjoitin ensin kahden luvun vähennyslaskua, mutta desimaalitarkkuudella on ongelmia. Esimerkiksi tässä tapauksessa 1-0.01=0.989999997, kirjoita vain muutama numero rennosti, älä ota sitä vakavasti. Tämä tilanne hoidetaan BigDecimalilla.

2. Lasketun summan tarkkuuden ongelma on ratkaistu. Muussa tapauksessa laskettu summa on 1,00 ja lähettämäni summa on 1. Koska kyseessä on merkkijonovertailu. 1 ei ole yhtä kuin 1 vertailun aikana. Jos kyseessä on 1,00, tapahtuu virhe.

3. Kun jmeter palauttaa viestin, jos määrä on liian suuri, näkyviin tulee tieteellinen merkintä, esimerkiksi palautettu summa on 1.23456789013E9. Se on myös muutettava normaaliin digitaaliseen muotoon.

Toistaiseksi näitä kolmea sudenkuoppaa käsitellään alla. Skenaario: Tarkista saldo ennen tilin siirtämistä, tarkista saldo tilin siirron jälkeen, vähennä kaksi saldoa ja tarkista, onko ero tapahtuman summa. Saldon tarkistaminen tulee liittää tietokantaan. En yhdistä sitä tähän. Käytän sen sijaan käyttäjäparametreja.Napsauta saadaksesi lisätietoja jmeter-yhteydestä mysql-tietokantaan, saldo ennen tapahtumaa on 1 ja saldo tapahtuman jälkeen on 0,99

  1. import java.math.BigDecimal;
  2. import java.math.RoundingMode;
  3. //动账前余额
  4. before=vars.get("BAL_1");
  5. //动账后余额
  6. after=vars.get("BAL_2");
  7. BigDecimal before=new BigDecimal(before);
  8. BigDecimal after=new BigDecimal(after);
  9. //两数相减,计算动账前后余额变化
  10. BigDecimal fee_new= before.subtract(after);
  11. //保留两位小数
  12. BigDecimal fee_new=fee_new.setScale(2,RoundingMode.HALF_UP);
  13. //转化为字符串
  14. String fee_new1=fee_new.toString();
  15. log.info("动账前后差值:"+fee_new1);

Laske ero, hanki tapahtuman summa, lisää väitteitä ja tee päätös.

Yllä oleva on vähennyslasku tehty.Kirjoita muistiin yhteen-, vähennys-, kerto- ja jakolasku.

  1. import java.math.BigDecimal;
  2. BigDecimal a=new BigDecimal("6");
  3. BigDecimal b=new BigDecimal("2");
  4. BigDecimal c=a.add(b);
  5. String c1=c.toString();
  6. log.info("a+b="+c1);
  7. BigDecimal c=a.subtract(b);
  8. String c1=c.toString();
  9. log.info("a-b="+c1);
  10. BigDecimal c=a.multiply(b);
  11. String c1=c.toString();
  12. log.info("a*b="+c1);
  13. BigDecimal c=a.divide(b);
  14. String c1=c.toString();
  15. log.info("a/b="+c1);


Kirjoitin sen kiireessä ja unohdin lisätä tieteellisen merkintämuunnoksen. Jos palautettu tulos on tieteellisessä merkinnässä, se on yleensä muutettava.

Käytä suoraan säännöllisiä lausekkeita purkaaksesi bal_ar ja sitten käsitelläksesi sen

  1. bal_ar=vars.get("bal_ar");
  2. BigDecimal bal_ar1=new BigDecimal(bal_ar);
  3. BigDecimal bal_ar1=bal_ar1.setScale(2,RoundingMode.HALF_UP);
  4. String bal_ar2=bal_ar1.toPlainString();
  5. log.info("科学计数法转化以后:"+bal_ar2);

Merkkijono bal_ar2=bal_ar1.toPlainString();