Round to nearest when calculating dimensions from percent.

Bug: 23790376
Change-Id: I36c830f94e4ae2dceacf25b8982b025b86a8d2f8
diff --git a/percent/src/android/support/percent/PercentLayoutHelper.java b/percent/src/android/support/percent/PercentLayoutHelper.java
index 2416f88..6953fa1 100644
--- a/percent/src/android/support/percent/PercentLayoutHelper.java
+++ b/percent/src/android/support/percent/PercentLayoutHelper.java
@@ -27,6 +27,8 @@
 
 import android.support.percent.R;
 
+import java.lang.Math;
+
 /**
  * Helper for layouts that want to support percentage based dimensions.
  *
@@ -394,21 +396,21 @@
                             || mPreservedParams.height == 0) && (heightPercent < 0);
 
             if (widthPercent >= 0) {
-                params.width = (int) (widthHint * widthPercent);
+                params.width = Math.round(widthHint * widthPercent);
             }
 
             if (heightPercent >= 0) {
-                params.height = (int) (heightHint * heightPercent);
+                params.height = Math.round(heightHint * heightPercent);
             }
 
             if (aspectRatio >= 0) {
                 if (widthNotSet) {
-                    params.width = (int) (params.height * aspectRatio);
+                    params.width = Math.round(params.height * aspectRatio);
                     // Keep track that we've filled the width based on the height and aspect ratio.
                     mPreservedParams.mIsWidthComputedFromAspectRatio = true;
                 }
                 if (heightNotSet) {
-                    params.height = (int) (params.width / aspectRatio);
+                    params.height = Math.round(params.width / aspectRatio);
                     // Keep track that we've filled the height based on the width and aspect ratio.
                     mPreservedParams.mIsHeightComputedFromAspectRatio = true;
                 }
@@ -449,26 +451,26 @@
                     MarginLayoutParamsCompat.getMarginEnd(params));
 
             if (leftMarginPercent >= 0) {
-                params.leftMargin = (int) (widthHint * leftMarginPercent);
+                params.leftMargin = Math.round(widthHint * leftMarginPercent);
             }
             if (topMarginPercent >= 0) {
-                params.topMargin = (int) (heightHint * topMarginPercent);
+                params.topMargin = Math.round(heightHint * topMarginPercent);
             }
             if (rightMarginPercent >= 0) {
-                params.rightMargin = (int) (widthHint * rightMarginPercent);
+                params.rightMargin = Math.round(widthHint * rightMarginPercent);
             }
             if (bottomMarginPercent >= 0) {
-                params.bottomMargin = (int) (heightHint * bottomMarginPercent);
+                params.bottomMargin = Math.round(heightHint * bottomMarginPercent);
             }
             boolean shouldResolveLayoutDirection = false;
             if (startMarginPercent >= 0) {
                 MarginLayoutParamsCompat.setMarginStart(params,
-                        (int) (widthHint * startMarginPercent));
+                        Math.round(widthHint * startMarginPercent));
                 shouldResolveLayoutDirection = true;
             }
             if (endMarginPercent >= 0) {
                 MarginLayoutParamsCompat.setMarginEnd(params,
-                        (int) (widthHint * endMarginPercent));
+                        Math.round(widthHint * endMarginPercent));
                 shouldResolveLayoutDirection = true;
             }
             if (shouldResolveLayoutDirection && (view != null)) {