Advertisement
tchenkov

java double shit storm...

Mar 20th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.72 KB | None | 0 0
  1. import java.math.BigDecimal;
  2.  
  3. /**
  4.  * Created by todor on 20.03.2017 г..
  5.  */
  6. public class Dummy2 {
  7.     public static void main(String[] args) {
  8.         double max =     9000000000000086504520987234.450000; // zakryglq do pyrvite 16 cifri
  9.         String maxStr = "9000000000000086504520987234.450000";
  10.         BigDecimal bd = new BigDecimal(maxStr).setScale(6, BigDecimal.ROUND_HALF_UP);
  11.         System.out.printf("1.  %f%n", max);
  12.         System.out.printf("2.  %s%n", maxStr);
  13.         System.out.printf("3.  %s%n", bd);
  14.        
  15.         System.out.printf("4.  %f%n", max / 10);
  16.         System.out.printf("5.  %f%n", max * 0.1);
  17.         System.out.printf("6.  %f%n", max * 10 / 100 );
  18.        
  19.         // dolniqt BigDecmial ne izliza pochti vinagi
  20.         System.out.printf("7.  %s%n", bd.multiply(new BigDecimal(0.1)).setScale(6, BigDecimal.ROUND_HALF_UP));
  21.    
  22.         // dolnite BigDecmial-i sa identichni vinagi i davat veren rezultat
  23.         System.out.printf("8.  %s%n", bd.multiply(new BigDecimal("0.1")).setScale(6, BigDecimal.ROUND_HALF_UP));
  24.         System.out.printf("9.  %s%n", bd.multiply(new BigDecimal(10)).divide(new BigDecimal(100), 6, BigDecimal.ROUND_HALF_UP));
  25.         System.out.printf("10. %s%n", bd.multiply(new BigDecimal("10")).divide(new BigDecimal("100"), 6, BigDecimal.ROUND_HALF_UP));
  26.         System.out.println();
  27.         //
  28.    
  29.         max =     986504520987234.450000; // zakryglq do pyrvite 16 cifri nezavisimo dali sa v drobnata chast
  30.         maxStr = "986504520987234.450000";
  31.         bd = new BigDecimal(maxStr).setScale(6, BigDecimal.ROUND_HALF_UP);
  32.         System.out.printf("1.  %f%n", max);
  33.         System.out.printf("2.  %s%n", maxStr);
  34.         System.out.printf("3.  %s%n", bd);
  35.    
  36.         System.out.printf("4.  %f%n", max / 10);
  37.         System.out.printf("5.  %f%n", max * 0.1);
  38.         System.out.printf("6.  %f%n", max * 10 / 100 );
  39.    
  40.         // dolniqt BigDecmial ne izliza pochti vinagi
  41.         System.out.printf("7.  %s%n", bd.multiply(new BigDecimal(0.1)).setScale(6, BigDecimal.ROUND_HALF_UP));
  42.    
  43.         // dolnite BigDecmial-i sa identichni vinagi i davat veren rezultat
  44.         System.out.printf("8.  %s%n", bd.multiply(new BigDecimal("0.1")).setScale(6, BigDecimal.ROUND_HALF_UP));
  45.         System.out.printf("9.  %s%n", bd.multiply(new BigDecimal(10)).divide(new BigDecimal(100), 6, BigDecimal.ROUND_HALF_UP));
  46.         System.out.printf("10. %s%n", bd.multiply(new BigDecimal("10")).divide(new BigDecimal("100"), 6, BigDecimal.ROUND_HALF_UP));
  47.         System.out.println();
  48.        
  49.         //
  50.    
  51.         max =     98654520987234.450000; // pri 16 cifri vsichko izliza osven ediniqt BigDecmial
  52.         maxStr = "98654520987234.450000";
  53.         bd = new BigDecimal(maxStr).setScale(6, BigDecimal.ROUND_HALF_UP);
  54.         System.out.printf("1.  %f%n", max);
  55.         System.out.printf("2.  %s%n", maxStr);
  56.         System.out.printf("3.  %s%n", bd);
  57.    
  58.         System.out.printf("4.  %f%n", max / 10);
  59.         System.out.printf("5.  %f%n", max * 0.1);
  60.         System.out.printf("6.  %f%n", max * 10 / 100 );
  61.    
  62.         // dolniqt BigDecmial ne izliza pochti vinagi
  63.         System.out.printf("7.  %s%n", bd.multiply(new BigDecimal(0.1)).setScale(6, BigDecimal.ROUND_HALF_UP));
  64.    
  65.         // dolnite BigDecmial-i sa identichni vinagi i davat veren rezultat
  66.         System.out.printf("8.  %s%n", bd.multiply(new BigDecimal("0.1")).setScale(6, BigDecimal.ROUND_HALF_UP));
  67.         System.out.printf("9.  %s%n", bd.multiply(new BigDecimal(10)).divide(new BigDecimal(100), 6, BigDecimal.ROUND_HALF_UP));
  68.         System.out.printf("10. %s%n", bd.multiply(new BigDecimal("10")).divide(new BigDecimal("100"), 6, BigDecimal.ROUND_HALF_UP));
  69.         System.out.println();
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement