title: PySpark; DecimalType multiplication precision loss
body: <p>When doing multiplication with PySpark, it seems PySpark is losing precision.</p>
  
  <p>For example, when multiple two decimals with precision 38,10, it returns 38,6 and rounds to three decimals which is the incorrect result.</p>
  
  <pre class="lang-py prettyprint-override"><code>from decimal import Decimal
  from pyspark.sql.types import DecimalType, StructType, StructField
  
  schema = StructType([StructField("amount", DecimalType(38,10)), StructField("fx", DecimalType(38,10))])
  df = spark.createDataFrame([(Decimal(233.00), Decimal(1.1403218880))], schema=schema)
  
  df.printSchema()
  df = df.withColumn("amount_usd", df.amount * df.fx)
  df.printSchema()
  df.show()
  </code></pre>
  
  <p>Result</p>
  
  <pre class="lang-py prettyprint-override"><code>&gt;&gt;&gt; df.printSchema()
  root
   |-- amount: decimal(38,10) (nullable = true)
   |-- fx: decimal(38,10) (nullable = true)
   |-- amount_usd: decimal(38,6) (nullable = true)
  
  &gt;&gt;&gt; df = df.withColumn("amount_usd", df.amount * df.fx)
  &gt;&gt;&gt; df.printSchema()
  root
   |-- amount: decimal(38,10) (nullable = true)
   |-- fx: decimal(38,10) (nullable = true)
   |-- amount_usd: decimal(38,6) (nullable = true)
  
  &gt;&gt;&gt; df.show()
  +--------------+------------+----------+
  |        amount|          fx|amount_usd|
  +--------------+------------+----------+
  |233.0000000000|1.1403218880|265.695000|
  +--------------+------------+----------+
  
  </code></pre>
  
  <p>Is this a bug? Is there a way to get the correct result?</p>