NetCDF変数には各々、最初に定義された時に指定される外部タイプを所有しています。この外部タイプによってデータがテキストや数値として扱われるか判別されます。数値として扱われる場合には、その範囲と精度も指定されます。
NetCDFの変数の外部タイプが char の場合、テキスト配列である文字データのみが変数として書き込み、読み取ることが可能です。 テキストデータを異なるタイプのデータに自動変換する機能はサポートされていません。
ただし、数値データである場合には変数を異なるデータタイプとしてアクセスし、メモリに格納されている数値データとNetCDF変数との間で自動的にタイプ変換する機能をNetCDFライブラリは保有しています。例えば、全ての数値データを倍精度の浮動小数点数として 扱うプログラムを作成した場合には、NetCDF変数の外部タイプがどんなタイプであるかを気にせずに、NetCDFデータを倍精度配列に読み取ることができます。 NetCDFデータを読み取る際には、様様な大きさの整数 や単精度の浮動小数点数は、倍精度の数値用のデータアクセスインターフェースを使ってアクセスすれば、自動的に全て倍精度数値になります。もちろん、このように自動的に数値が変換されることを望まない場合には、その数値タイプが存在すれば、各々のNet CDF 変数の外部データタイプに対応したインターフェースを使用すれば避けられます。
NetCDFが行なう数値変換は大変わかりやすいものばかりです。それは、数値変換が任意のタイプのデータを別のデータタイプの変数を取るよう指定する操作であるからです。例えば、浮動小数点NetCDFデータを整数として読む場合には、結果は零に打ち切られます。浮動小数点数を整数の変数に割り付ける場合と同様です。このような打ち切りは数値変換に伴う精度悪化の例といえます。
ある数値タイプから他の異なる数値タイプに変換する場合にも、変換先のタイプが変換された数値を表すことのできないタイプの場合にもエラーが生じます。例えば、整数では外部タイプとしてIEEE浮動小数点数として格納されているデータを表せません。数値の配列をアクセスする際には、一つ以上の数値が表せる範囲外である場合にはレンジエラーが返ってきます。その他の範囲内にある数値については正しく変換されます。
注意すべき点は、タイプ変換による精度のロスのみではエラーを引き起こさないということです。例えば、倍精度の数値を整数として読む場合には、倍精度の数値の大きさが読込先のプラットフォームで表し切れる整数の範囲外でなければエラーと判定されません。 同様に、大きな整数を浮動小数点数に変換する際に、浮動小数点数の仮数部にその整数の全てのビットを表し切れなくて精度にロスが生じたとしてもエラーにはなりません。このような精度のロスを避けたい場合にはアクセスする変数の外部タイプをチェックして、使用する内部タイプと整合性があることを確認してください。
表し切れる範囲の境界に近い大きな浮動小数点数を書き込む場合にレンジエラーが生じるかどうかはプラットフォーム次第です。NetCDF浮動小数点変数に書き込める最大の浮動小数点数は、使用しているシステムで表せる 最大の浮動小数点数であり、2の128乗よりは小さい値です。倍精度変数に書き込める最大の倍精度数値は、使用しているシステムで表せる最大の倍精度数値であり、2の104乗より小さくなります。
この自動変換と外部データ表示とと内部とでデータタイプを切り離すことは、NetCDFの将来のバージョンにおいてより重要性を増してくるでしょう。それは、将来、対応する内部タイプが存在しない詰めありデータ用(例えば11ビット数値の配列等)に新たな外部データタイプが導入されることが考えられるからです。