Problem: The Python parser in the Field Calculator returns incorrect results
In ArcMap, when the Python parser is used in the Field Calculator to carry out a division operation, integers are returned instead of decimals.
An example of the Python expression is as follows:
The division operation using the Field Calculator returns 0 for all fields.
This is by design. Python 2.x is designed to return integers when dividing whole numbers regardless of the field type. For example, 1/9=0.
Solution or Workaround
In the attribute table, create a float type field. This allows Python to return a decimal in the result. After creating the new field, apply the Python script.
A. Create a new field type as float in the attribute table.
1. Open ArcMap.
2. Right-click the selected layer in the Table Of Contents, and select Open Attribute Table.
3. Click the Table option drop-down arrow, and select Add Field.
4. In the Add Field dialog box, set the field name, and select Float as the field type.
5. Click OK.
B. Apply the Python script.
1. Right-click the new field, and select Field Calculator.
2. If a warning on calculating outside of an edit session displays, click Yes.
3. In the Field Calculator, type the script highlighted below.
The code provided is for the input of the type float.
4. Click OK.
- ArcGIS Help: ArcGIS field data types
- ArcGIS Help: Calculate Field examples
- Problem: Float values from text files are truncated to whole numbers in ArcMap
- FAQ: Why is an integer value returned, instead of a real number, when dividing two integers when working in Python?