Our Response
To address the issues discussed by the community related to the double (floating point) to decimal field conversion during the 6.8.02 schema update, we plan to introduce changes in Specify 6.8.03 that address feedback we have received and return Specify 6 to the way it visualized and exported values in floating point fields in 6.8.01 and earlier.
These changes will most commonly affect fields used for measurements such as minElevation, maxElevation, and all Number*fields in various database tables.
This planned update to Specify 6 retains the data type changes to BigDecimal we made in 6.8.02 but changes the behavior of data inBigDecimal fields within the software itself, including Specify forms, labels, reports, and exports.
After this proposed change, the number of digits to the right of the decimal point in BigDecimal fields will be the number of digits entered by the user through forms, and will appear in mostly the same way (see below) in query results, labels and reports, and exports.
The underlying database would still store non-integer numbers with 10 decimal digits, but the extra zeros will never be visible, they will be truncated (removed) for displays, query results and exports.
So the behavior within Specify would look and act like it did before the change from floating point to decimal data type in Specify 6.8.02, but the data type will remain BigDecimal.
An important consideration will be that all trailing zeros in a decimal field would be truncated, so if you entered data into a Specify BigDecimal field, this is what would happen:
| Entered | Displayed, Exported, etc. |
|---|---|
| 3 | 3.0 |
| 3.0 | 3.0 |
| 3.140 | 3.14 |
| 3.10 | 3.1 |
| 3.01 | 3.01 |
| 3.141592653 | 3.141592653 |
This is the same behavior that float fields had before the Specify 6.8.02 update.
Up to 9 digits come back faithfully (unless there is a trailing zero - the zero gets truncated).
So with 3 entered, we falsely imply a higher level of resolution: 3.0
With any number with a trailing zero (except the first decimal digit), that zero will be truncated, lowering the level of precision: 3.140 turns into 3.14
Questions
Are there other considerations about the change from Float to BigDecimal that we have not considered?
We are wondering how many people currently or likely will use Specify for precise measurements where the exact level of precision is critical to maintain.
For fields where an entered trailing zero must be protected and returned, would using a character field in those cases, treating the digits as text, be an adequate solution?
Thank you for taking the time to respond to our inquisition. Please reply with any other considerations or questions that you have about this change, as well as any advice or special considerations we should have.
All Float → Decimal Fields
Accession
Number1Number2
Attachment Image Attribute
Number1Number2
Borrow
Number1Number2
Collecting Event Attribute
Number9Number12Number13Number1Number2Number3Number4Number5Number6Number7Number8Number11Number10
Collecting Trip Attribute
Number9Number12Number13Number1Number2Number3Number4Number5Number6Number7Number8Number11Number10
Collection Object
Number1Number2
Collection Object Attribute
Number42Number38Number39Number40Number1Number10Number11Number12Number13Number14Number15Number16Number17Number18Number19Number2Number20Number21Number22Number23Number24Number25Number26Number27Number28Number29Number3Number31Number32Number33Number34Number35Number36Number4Number5Number6Number7Number9Number37Number41TopDistanceBottomDistance
Collection Object Property
Number21Number22Number23Number24Number25Number26Number27Number28Number29Number30Number1Number2Number3Number4Number5Number6Number7Number8Number9Number10Number11Number12Number13Number14Number15Number16Number17Number18Number19Number20
Common Name TX Citation
Number1Number2
Conservation Description
WidthHeightObjLength
DNA Primer
Number1Number2ReservedNumber3ReservedNumber4
DNA Sequence
Number1Number2Number3
DNA Sequencing Run
Number1Number2Number3
DNA Sequencing Run Citation
Number1Number2
Deaccession
Number1Number2Number3Number4Number5
Determination
Number1Number2Number3Number4Number5
Disposal
Number1Number2
Exchange In
Number1Number2
Exchange Out
Number1Number2
Geo Coord Detail
GeoRefAccuracy
Geologic Time Period
EndPeriodEndUncertaintyStartPeriodStartUncertainty
Gift
Number1Number2
Lithostrat
Number1Number2
Loan
Number1Number2
Locality
MinElevationMaxElevationElevationAccuracyLatLongAccuracy
Locality Detail
StartDepthEndDepthNumber1Number2Number3Number4Number5
Material Sample
GGBNConcentrationGGBNAbsorbanceRatio260_230GGBNAbsorbanceRatio260_280GGBNVolumeGGBNWeightGGBNSampleSizeNumber1Number2ReservedNumber3ReservedNumber4
Paleocontext
Number1Number2Number3Number4Number5
Permit
Number1Number2
Preparation
Number1Number2
Preparation Attribute
Number1Number2Number3
Preparation Property
Number21Number22Number23Number24Number25Number26Number27Number28Number29Number30Number1Number2Number3Number4Number5Number6Number7Number8Number9Number10Number11Number12Number13Number14Number15Number16Number17Number18Number19Number20
Project
Number1Number2
Reference Work
Number1Number2
Repository Agreement
Number1Number2
Shipment
Number1Number2
Taxon
Number3Number4Number5
Taxon Attribute
Number1Number2Number3Number4Number5Number6Number7Number8Number9Number10Number11Number12Number13Number14Number15Number16Number17Number18Number19Number20
Taxon Citation
Number1Number2
Treatment Event
Number3Number4Number5
Voucher Relationship
Number1Number2Number3